From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 900224DBF0 for ; Sat, 1 Mar 2025 21:15:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AF36468E1C2; Sat, 1 Mar 2025 23:15:48 +0200 (EET) Received: from mail-yb1-f172.google.com (mail-yb1-f172.google.com [209.85.219.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C008768D857 for ; Sat, 1 Mar 2025 23:15:41 +0200 (EET) Received: by mail-yb1-f172.google.com with SMTP id 3f1490d57ef6-e60aef2711fso1584395276.2 for ; Sat, 01 Mar 2025 13:15:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740863740; x=1741468540; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=aIkZzY1HilnwlMLORZRq5HFhyZh5im3Cb8NL3EgGqnY=; b=jFqJfEIn7Po57sNtbj1qTUdb5TbvoC6hnZAv+qnU2dExkKYNHwNS1qiNA+pkbabqgK sTYzGBk2ehXHamvh6Hkf1yemICXTLsnorLnMob0pBsBQmAligLHGbY2SlV75HZoFzrW5 U9/Ha7QC3bPnhfcLafq0ngjLGvkDLGREPg47lZgdUVdXhgt3jbRFCs0rJfoS02ZucGxS pgbiwSmETTbvLbKhubF5z1210WGhxdIyGmvs5EeeQKdfjHx1AMk9NHvOkNAqoF7fbmsY G8C7v9c05KLuXZgcOapazSTGrKjO8+fUnD0K9JP5wAFjQBc2YeF+7pcyOzct3gQk3dsz ecXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740863740; x=1741468540; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aIkZzY1HilnwlMLORZRq5HFhyZh5im3Cb8NL3EgGqnY=; b=C40liEocW0ipD2yirq/5kv3Tm5dAx2yN6D0Ooh1CdjcKUkQrgGihkZvrPKbO6F8SU2 9tgNEprRj2mYiESxF1SjKqDcUiEeyK4gUUmEIeqNFPY2WiooZD4UjKBC6uRwYzayAn2f Cvgo7zD2H+E5rmIkSpz1EffNeyESdlyw9MSkjsMJIL45q8zC3bv6XaRFpgVDnvMlznkW +nazZ5axecZMEpLhqq76hMWugSBuWUyOTxsxq2ZZS+7BtpytvIgzZAQ28j2/gpYXwIYx JlGICy2M766zErwFFV/yutFu3QtZOJEc0g+hGScpgiy7xmzD5LjzPCt3cJS1ouQHOq6t BBYA== X-Gm-Message-State: AOJu0Yz+xXzH7N5TyQt3XPHeLkVj6EPlBRykaSPtYz5E2VWXipL3KtG/ P5fSx9oBeYa87awRIrliWKi+pqOXzMjgVKhrgx83BC/1wtLqZl8lyPC1uw== X-Gm-Gg: ASbGncs4BFY6xwQ2W4E+h7U11gW8XWvEWk9FGeFhvOPKACFafjfdKxwDLoUEYwU1F3s wMTHw4FSJKLWJ7+Ib4sHJi9cY3KL1QhRjUG31VOA3Byn0XIdMekm2Xi5vfiGcTfl4ZVTS1PEeEp gaKWyXR6qc/S8MlwHdNqIdFuOUIhH8yvGOA5vTTKIBfYnRYXLhtHdXAHqGqnd02+eqfDSW+hsiD glcZh9V5jJ3Ps3f4HOLxyKLxO5piOLW5xP9Kc7gqC4Td++55AKg9I75iCX5TniyZNB4kfMldPG2 WAc6ptkxcTyAtIa4ngLbd7CoBvlxcgZsOxLQ1xrNZYBPQ88e8JbQZzknDlx0EGDk3h/i2T2ylnU 94AHtdKZtHut3acRmXbSchCJp/DwIj0s0cR3DpYY= X-Google-Smtp-Source: AGHT+IGgRvbFjDTHsIQHCP2nEYa+1WXvQM8PC0c3aK7to5/4pKx/k/ENKnhRP55w/KFz5UHAzW0rHg== X-Received: by 2002:a05:6902:218e:b0:e5d:d340:b046 with SMTP id 3f1490d57ef6-e60b2f3e9camr8910943276.31.1740863739766; Sat, 01 Mar 2025 13:15:39 -0800 (PST) Received: from localhost.localdomain (108-65-109-112.lightspeed.tukrga.sbcglobal.net. [108.65.109.112]) by smtp.gmail.com with ESMTPSA id 3f1490d57ef6-e60b8492409sm1221746276.26.2025.03.01.13.15.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 13:15:38 -0800 (PST) From: Rashad Tatum To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Mar 2025 16:15:02 -0500 Message-ID: <20250301211522.2061581-1-tatum.rashad@gmail.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3] libavformat/rtsp: Change ff_sdp_parse and sdp_parse_line to handle memory alloc errors X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Rashad Tatum Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: for RTSPStream and RTSPSource --- libavformat/rtsp.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 25a7602832..bf5db93e44 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -423,7 +423,7 @@ static void parse_fmtp(AVFormatContext *s, RTSPState *rt, } } -static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, +static int sdp_parse_line(AVFormatContext *s, SDPParseState *s1, int letter, const char *buf) { RTSPState *rt = s->priv_data; @@ -441,18 +441,18 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, p = buf; if (s1->skip_media && letter != 'm') - return; + return 0; switch (letter) { case 'c': get_word(buf1, sizeof(buf1), &p); if (strcmp(buf1, "IN") != 0) - return; + break; get_word(buf1, sizeof(buf1), &p); if (strcmp(buf1, "IP4") && strcmp(buf1, "IP6")) - return; + break; get_word_sep(buf1, sizeof(buf1), "/", &p); if (get_sockaddr(s, buf1, &sdp_ip)) - return; + break; ttl = 16; if (*p == '/') { @@ -500,11 +500,11 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, rt->nb_rtsp_streams >= s->max_streams ) { s1->skip_media = 1; - return; + break; } rtsp_st = av_mallocz(sizeof(RTSPStream)); if (!rtsp_st) - return; + return AVERROR(ENOMEM); rtsp_st->stream_index = -1; dynarray_add(&rt->rtsp_streams, &rt->nb_rtsp_streams, rtsp_st); @@ -545,7 +545,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, } else { st = avformat_new_stream(s, NULL); if (!st) - return; + break; st->id = rt->nb_rtsp_streams - 1; rtsp_st->stream_index = st->index; st->codecpar->codec_type = codec_type; @@ -660,15 +660,15 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, int exclude = 0; get_word(buf1, sizeof(buf1), &p); if (strcmp(buf1, "incl") && strcmp(buf1, "excl")) - return; + break; exclude = !strcmp(buf1, "excl"); get_word(buf1, sizeof(buf1), &p); if (strcmp(buf1, "IN") != 0) - return; + break; get_word(buf1, sizeof(buf1), &p); if (strcmp(buf1, "IP4") && strcmp(buf1, "IP6") && strcmp(buf1, "*")) - return; + break; // not checking that the destination address actually matches or is wildcard get_word(buf1, sizeof(buf1), &p); @@ -677,7 +677,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, rtsp_src = av_mallocz(sizeof(*rtsp_src)); if (!rtsp_src) { av_freep(&dest_addr); - return; + return AVERROR(ENOMEM); } av_strlcpy(rtsp_src->dest_addr, dest_addr, sizeof(rtsp_src->dest_addr)); get_word(rtsp_src->src_addr, sizeof(rtsp_src->src_addr), &p); @@ -716,12 +716,14 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, } break; } + + return 0; } int ff_sdp_parse(AVFormatContext *s, const char *content) { const char *p; - int letter, i; + int letter, i, err; char buf[SDP_MAX_SIZE], sdp_ip_str[50], *q; bool parsed_first_media_desc = false; SDPParseState sdp_parse_state = { { 0 } }, *s1 = &sdp_parse_state; @@ -762,7 +764,10 @@ int ff_sdp_parse(AVFormatContext *s, const char *content) } *q = '\0'; - sdp_parse_line(s, s1, letter, buf); + err = sdp_parse_line(s, s1, letter, buf); + if (err < 0 ) + return err; + if(letter == 'm') parsed_first_media_desc = true; -- 2.48.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".