From patchwork Tue Nov 24 01:16:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 24022 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id CF38C44A048 for ; Tue, 24 Nov 2020 03:43:05 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A458168BBF4; Tue, 24 Nov 2020 03:43:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f67.google.com (mail-qv1-f67.google.com [209.85.219.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9EB4D68BB2C for ; Tue, 24 Nov 2020 03:42:58 +0200 (EET) Received: by mail-qv1-f67.google.com with SMTP id ec16so9926586qvb.0 for ; Mon, 23 Nov 2020 17:42:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=yeVIliSWccwVjWgUXCYXh1ETXt6jXSYEy3zbqpKh81w=; b=oJuk4jzZIl9QooZsT0yRjcg3njndKEKR+I0o1j7z4RT9Wyjchp1VqltS/Uy9e4qHzS KusMbHVaqilIL2G4KI2z1+JOmkNFMChprN2sjiuytoAZWuHsQwgAoCfW1UYifNG8akpU DdzKNOrlsdvuPa2zMEPusSrltsnLWVzG3Ok/uB9Zb3sJJQRClRG6ux/zOAfj7FHfjLk0 ZYFeg6/YEbBAsaIiQRpLGe3YeHKMuR1LkyHH3C5c7fHqLQwN1zveHDjeyJg0bIy1+Lyo geGhWZtkJUgIDR7A776ID/llwnNeRasG5zdc8fcRIBgtsZlSlxpxhQJT38LudAlx6ZWu XgIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=yeVIliSWccwVjWgUXCYXh1ETXt6jXSYEy3zbqpKh81w=; b=t0VZvTVVtRzJiiXrviAMtvdqyWrz5VhMzG4UX38hTZzh9xCVIBQlGVOpBmt//awbhD PAPykG3zgxWZcZEml6hQg0UzI6e//S1ixb3Rj34unltGsRdTuy6sKMOgYXEj+z7DInVM vhtSGi+Z/E0j/23yD9wMpqGV808EKIukFo4pnBCIXmWWlwoGECmSOi/7TUcpKj1uEcv3 7hd75CkvUwdINwVaGj3d1YcIzjDxaqRMH7eVo3kaDOsTkqdQ5DiZ7ZRinqZJUiG20cfH t5m/beA2H2Pk6xMH44otJaZ144YBo4slTM94Usp20TMEUCJKTSiQHrrvy3MZLeuSAecd 8Fdw== X-Gm-Message-State: AOAM530mUMKaQOmWgrXD88+dhA2Op2Pr2ZnXwIS4cpcYxLpHbS3+7upT ADQQkuCNpD9bNTadu+amQI1neh6QnFRfeQ== X-Google-Smtp-Source: ABdhPJzF5Rx72CjcNfA1pDgGKYo50r9eFt7kOmG+U8Xg2BebN3Mtnpdrwoo77j6pv6jc7vDFk7MayQ== X-Received: by 2002:a17:902:9307:b029:d9:d097:fd6c with SMTP id bc7-20020a1709029307b02900d9d097fd6cmr1964777plb.10.1606180610786; Mon, 23 Nov 2020 17:16:50 -0800 (PST) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id ge21sm635655pjb.5.2020.11.23.17.16.48 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Nov 2020 17:16:49 -0800 (PST) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 24 Nov 2020 09:16:45 +0800 Message-Id: <1606180605-6558-1-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 Subject: [FFmpeg-devel] [PATCH] avformat/rtsp: prefer to use MAX_URL_SIZE for url and command buffer X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavformat/rtsp.c | 22 +++++++++++----------- libavformat/rtsp.h | 5 +++-- libavformat/rtspdec.c | 20 ++++++++++---------- libavformat/rtspenc.c | 4 ++-- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 0be405a..c7ffa07 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -1025,7 +1025,7 @@ static void handle_rtp_info(RTSPState *rt, const char *url, static void rtsp_parse_rtp_info(RTSPState *rt, const char *p) { int read = 0; - char key[20], value[1024], url[1024] = ""; + char key[20], value[MAX_URL_SIZE], url[MAX_URL_SIZE] = ""; uint32_t seq = 0, rtptime = 0; for (;;) { @@ -1124,7 +1124,7 @@ void ff_rtsp_skip_packet(AVFormatContext *s) { RTSPState *rt = s->priv_data; int ret, len, len1; - uint8_t buf[1024]; + uint8_t buf[MAX_URL_SIZE]; ret = ffurl_read_complete(rt->rtsp_hd, buf, 3); if (ret != 3) @@ -1150,7 +1150,7 @@ int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, int return_on_interleaved_data, const char *method) { RTSPState *rt = s->priv_data; - char buf[4096], buf1[1024], *q; + char buf[MAX_URL_SIZE], buf1[MAX_URL_SIZE], *q; unsigned char ch; const char *p; int ret, content_length, line_count = 0, request = 0; @@ -1230,7 +1230,7 @@ start: av_freep(&content); if (request) { - char buf[1024]; + char buf[MAX_URL_SIZE]; char base64buf[AV_BASE64_SIZE(sizeof(buf))]; const char* ptr = buf; @@ -1306,7 +1306,7 @@ static int rtsp_send_cmd_with_content_async(AVFormatContext *s, int send_content_length) { RTSPState *rt = s->priv_data; - char buf[4096], *out_buf; + char buf[MAX_URL_SIZE], *out_buf; char base64buf[AV_BASE64_SIZE(sizeof(buf))]; if (!rt->rtsp_hd_out) @@ -1416,7 +1416,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, int rtx = 0, j, i, err, interleave = 0, port_off; RTSPStream *rtsp_st; RTSPMessageHeader reply1, *reply = &reply1; - char cmd[2048]; + char cmd[MAX_URL_SIZE]; const char *trans_pref; if (rt->transport == RTSP_TRANSPORT_RDT) @@ -1437,7 +1437,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, port_off -= port_off & 0x01; for (j = rt->rtp_port_min + port_off, i = 0; i < rt->nb_rtsp_streams; ++i) { - char transport[2048]; + char transport[MAX_URL_SIZE]; /* * WMS serves all UDP data over a single connection, the RTX, which @@ -1586,7 +1586,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, break; case RTSP_LOWER_TRANSPORT_UDP: { - char url[1024], options[30] = ""; + char url[MAX_URL_SIZE], options[30] = ""; const char *peer = host; if (rt->rtsp_flags & RTSP_FLAG_FILTER_SRC) @@ -1604,7 +1604,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, break; } case RTSP_LOWER_TRANSPORT_UDP_MULTICAST: { - char url[1024], namebuf[50], optbuf[20] = ""; + char url[MAX_URL_SIZE], namebuf[50], optbuf[20] = ""; struct sockaddr_storage addr; int port, ttl; AVDictionary *opts = map_to_opts(rt); @@ -1666,7 +1666,7 @@ int ff_rtsp_connect(AVFormatContext *s) { RTSPState *rt = s->priv_data; char proto[128], host[1024], path[1024]; - char tcpname[1024], cmd[2048], auth[128]; + char tcpname[1024], cmd[MAX_URL_SIZE], auth[128]; const char *lower_rtsp_proto = "tcp"; int port, err, tcp_fd; RTSPMessageHeader reply1, *reply = &reply1; @@ -2324,7 +2324,7 @@ static int sdp_read_header(AVFormatContext *s) RTSPStream *rtsp_st; int size, i, err; char *content; - char url[1024]; + char url[MAX_URL_SIZE]; if (!ff_network_init()) return AVERROR(EIO); diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h index 251ed86..b74cdc1 100644 --- a/libavformat/rtsp.h +++ b/libavformat/rtsp.h @@ -27,6 +27,7 @@ #include "rtpdec.h" #include "network.h" #include "httpauth.h" +#include "internal.h" #include "libavutil/log.h" #include "libavutil/opt.h" @@ -316,7 +317,7 @@ typedef struct RTSPState { /** some MS RTSP streams contain a URL in the SDP that we need to use * for all subsequent RTSP requests, rather than the input URI; in * other cases, this is a copy of AVFormatContext->filename. */ - char control_uri[2048]; + char control_uri[MAX_URL_SIZE]; /** The following are used for parsing raw mpegts in udp */ //@{ @@ -444,7 +445,7 @@ typedef struct RTSPStream { * for the selected transport. Only used for TCP. */ int interleaved_min, interleaved_max; - char control_url[1024]; /**< url for this stream (from SDP) */ + char control_url[MAX_URL_SIZE]; /**< url for this stream (from SDP) */ /** The following are used only in SDP, not RTSP */ //@{ diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c index 28b35d1..6ea75b8 100644 --- a/libavformat/rtspdec.c +++ b/libavformat/rtspdec.c @@ -97,7 +97,7 @@ static int rtsp_send_reply(AVFormatContext *s, enum RTSPStatusCode code, const char *extracontent, uint16_t seq) { RTSPState *rt = s->priv_data; - char message[4096]; + char message[MAX_URL_SIZE]; int index = 0; while (status_messages[index].code) { if (status_messages[index].code == code) { @@ -143,7 +143,7 @@ static inline int rtsp_read_request(AVFormatContext *s, const char *method) { RTSPState *rt = s->priv_data; - char rbuf[1024]; + char rbuf[MAX_URL_SIZE]; int rbuflen, ret; do { ret = read_line(s, rbuf, sizeof(rbuf), &rbuflen); @@ -232,9 +232,9 @@ static int rtsp_read_setup(AVFormatContext *s, char* host, char *controlurl) RTSPState *rt = s->priv_data; RTSPMessageHeader request = { 0 }; int ret = 0; - char url[1024]; + char url[MAX_URL_SIZE]; RTSPStream *rtsp_st; - char responseheaders[1024]; + char responseheaders[MAX_URL_SIZE]; int localport = -1; int transportidx = 0; int streamid = 0; @@ -340,7 +340,7 @@ static int rtsp_read_record(AVFormatContext *s) RTSPState *rt = s->priv_data; RTSPMessageHeader request = { 0 }; int ret = 0; - char responseheaders[1024]; + char responseheaders[MAX_URL_SIZE]; ret = rtsp_read_request(s, &request, "RECORD"); if (ret) @@ -463,7 +463,7 @@ static inline int parse_command_line(AVFormatContext *s, const char *line, int ff_rtsp_parse_streaming_commands(AVFormatContext *s) { RTSPState *rt = s->priv_data; - unsigned char rbuf[4096]; + unsigned char rbuf[MAX_URL_SIZE]; unsigned char method[10]; char uri[500]; int ret; @@ -505,7 +505,7 @@ static int rtsp_read_play(AVFormatContext *s) RTSPState *rt = s->priv_data; RTSPMessageHeader reply1, *reply = &reply1; int i; - char cmd[1024]; + char cmd[MAX_URL_SIZE]; av_log(s, AV_LOG_DEBUG, "hello state=%d\n", rt->state); rt->nb_byes = 0; @@ -591,7 +591,7 @@ static int rtsp_read_pause(AVFormatContext *s) int ff_rtsp_setup_input_streams(AVFormatContext *s, RTSPMessageHeader *reply) { RTSPState *rt = s->priv_data; - char cmd[1024]; + char cmd[MAX_URL_SIZE]; unsigned char *content = NULL; int ret; @@ -634,7 +634,7 @@ static int rtsp_listen(AVFormatContext *s) int default_port = RTSP_DEFAULT_PORT; char tcpname[500]; const char *lower_proto = "tcp"; - unsigned char rbuf[4096]; + unsigned char rbuf[MAX_URL_SIZE]; unsigned char method[10]; int rbuflen = 0; int ret; @@ -825,7 +825,7 @@ static int rtsp_read_packet(AVFormatContext *s, AVPacket *pkt) RTSPState *rt = s->priv_data; int ret; RTSPMessageHeader reply1, *reply = &reply1; - char cmd[1024]; + char cmd[MAX_URL_SIZE]; retry: if (rt->server_type == RTSP_SERVER_REAL) { diff --git a/libavformat/rtspenc.c b/libavformat/rtspenc.c index d505444..c320227 100644 --- a/libavformat/rtspenc.c +++ b/libavformat/rtspenc.c @@ -49,7 +49,7 @@ int ff_rtsp_setup_output_streams(AVFormatContext *s, const char *addr) int i; char *sdp; AVFormatContext sdp_ctx, *ctx_array[1]; - char url[1024]; + char url[MAX_URL_SIZE]; if (s->start_time_realtime == 0 || s->start_time_realtime == AV_NOPTS_VALUE) s->start_time_realtime = av_gettime(); @@ -111,7 +111,7 @@ static int rtsp_write_record(AVFormatContext *s) { RTSPState *rt = s->priv_data; RTSPMessageHeader reply1, *reply = &reply1; - char cmd[1024]; + char cmd[MAX_URL_SIZE]; snprintf(cmd, sizeof(cmd), "Range: npt=0.000-\r\n");