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 D7F124DC06 for ; Sat, 1 Mar 2025 22:08:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 32EB668E08C; Sun, 2 Mar 2025 00:08:43 +0200 (EET) Received: from mail-yb1-f171.google.com (mail-yb1-f171.google.com [209.85.219.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A55B668E084 for ; Sun, 2 Mar 2025 00:08:35 +0200 (EET) Received: by mail-yb1-f171.google.com with SMTP id 3f1490d57ef6-e609cff9927so2073039276.3 for ; Sat, 01 Mar 2025 14:08:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740866912; x=1741471712; 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=M1L2b8cuMP9dFyhFrKz7RDdtb9fu5OsX8n+scWJ76aE=; b=Wz8z4z7/p/XuWFnGlT6l6H/0tzeX42N9Jl9SA2MqLPN6ZJwo5+DPp0ZGSpxMp4SKdm l5CWxnqzAwg7ufxt9UiE/regSRlj687n2gkgskyC50n+HrHxvs+qDiFNI3iga6/uWYJq ast/PMiwjcoyM5yL1smT0mtJBKKNsQDy1N3U4ThGDqsKS5rgUTYYyMtlq8sWUVKbkLrr FaSok9HdLbPm51ILv7Io0vsgCaBEGIGmltNitFMSpAttEApTXtT44dgFXOeeOb1SrkHq sOjUeh98O/jMLuPo6hq4lN/TnFkCHRmiGLHTxRn72xhfPyNNBMDBChAcpZIPA2zY0MmL y4+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740866912; x=1741471712; 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=M1L2b8cuMP9dFyhFrKz7RDdtb9fu5OsX8n+scWJ76aE=; b=cg3y7vbNV1EM43BiMPvA+D9ZcWmcl/qrRkk1FUH2U4Bwd6IBjhT/GG3N24/+HAErMq oNb5nxlAShqqSb6bP5EZ9z7x1iZq5Q7Cq7NyRvnKxN+supokwPMuj2MQroRK0HTc1HEY 11EcrkO9IvGDVxwOn6I8LM3YfQPacRJBvL4DgPJC5CFRl6UvUWPyoTVVh9ZfgGunFazd VnE/kWfDVNHG1y0aICFeWQtQSVEkd90iHyWMwLwX5IpQDnraX3wCquf2K3gJckn5aBH2 cGg9KfxNKgyK8Oxd6J33kR2o40Fl4+LUtaTrcbGHJgw9CHvcex7W+bnksZVhr6sAdpWF diQw== X-Gm-Message-State: AOJu0YydpS5rOn1fkPUx3hIRV+EN0gtikHOkYZXdTApCsBL+yu/9PL6B TZUEqhFaUjeBzgD20XiHzTGEZjQLTmmKU6hW4GiZRG7IGe8AcfSR7efvmA== X-Gm-Gg: ASbGnctIHIWEycW4JhqedSJ+naj1Yx1gYAyIdBg+Dofvbp57O2vWTt+bwm6zsPo/XZu a1uZuVhJjrXGpEWhAUDHf+B9GZH+nm8Yu5NuONVpBGlbue7AFZ7/akBuklwpPhFgUKlWhEEwubW B7GXWdI/hBnO0hTbO88/VcvL+8ENOLx5cUd5VGY6U+HGKKS/QQX0zBXShykQTRPkTYLqfKp2Szf 8Y4hQZOOLHP+HCZk0krnhzduUovR9LBtneYUlnzpgFFiczVyVtgKlIkj6ZYM2VrsvFcwB+e+UT7 +eitI8IQ3EvRL3hy19xyimrnQfHSJg6Jmql9d9Lmn/YnAhcYacSGAwzcOzJC11S7TJk04Kx3k1p x4xu5e4VYQtzBFWp7EaZVlPJZvOG60HpBumCsF3o= X-Google-Smtp-Source: AGHT+IFgfqDk/RucoIuTBpN28qidTQKF1z8M8BhpV1hydgJXUEvXshu4aIL3kyVQRlVgFG/l8gfaTA== X-Received: by 2002:a05:6902:1b89:b0:e5b:149c:d8d6 with SMTP id 3f1490d57ef6-e60b2ddb359mr9699855276.0.1740866912292; Sat, 01 Mar 2025 14:08:32 -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-e60a3aafebcsm1925569276.51.2025.03.01.14.08.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 14:08:31 -0800 (PST) From: Rashad Tatum To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Mar 2025 17:07:50 -0500 Message-ID: <20250301220815.2091788-1-tatum.rashad@gmail.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4] 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 | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 5ea471b40c..d16fd24ade 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -418,7 +418,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; @@ -436,18 +436,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 == '/') { p++; @@ -493,11 +493,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,22 +660,22 @@ 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); while (*p != '\0') { rtsp_src = av_mallocz(sizeof(*rtsp_src)); if (!rtsp_src) - return; + return AVERROR(ENOMEM); get_word(rtsp_src->addr, sizeof(rtsp_src->addr), &p); if (exclude) { if (s->nb_streams == 0) { @@ -711,12 +711,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], *q; SDPParseState sdp_parse_state = { { 0 } }, *s1 = &sdp_parse_state; @@ -738,7 +740,9 @@ int ff_sdp_parse(AVFormatContext *s, const char *content) p++; } *q = '\0'; - sdp_parse_line(s, s1, letter, buf); + err = sdp_parse_line(s, s1, letter, buf); + if(err < 0) + return AVERROR(ENOMEM); next_line: while (*p != '\n' && *p != '\0') p++; -- 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".