From patchwork Wed Dec 1 13:39:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 31865 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp9269078iob; Wed, 1 Dec 2021 05:39:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJx6IWrei/82g3zHGHGASOYnG9YHztuAjgtx6Jbl8jil5A8yf9jntxgSKaX0fPo3k1tu8J57 X-Received: by 2002:a17:906:5d06:: with SMTP id g6mr7403397ejt.3.1638365972102; Wed, 01 Dec 2021 05:39:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638365972; cv=none; d=google.com; s=arc-20160816; b=VdNvTdxkTJa6UWZ5mB6MxPUQ5ST35WRimdf+InU1oKjcyL9mtTUpq2hTw+cmcZWqjl t+gwzUHwXvoqzLhTCtWPw4yux1Fp1dSaPhSsrSp6V56tj1orOlSc2qmp6dZaRzm/R7b7 HKaTJYwfXK63vKeVmCBN0CbXzKk/dZ3FpV2+KOb19KJC6H+9kXjIYjudOhumalz0zzqh WCoaUoE67LiR298egtHlCle2aWmbYHogX1f3jzELaXxiseflZ2vxoqfybB1RsCVzvzQk TybeuBw5FvC/xhxYO+UUV5vlfu2w+qWQTuEkCCrkJnczBQzfMabBlg8nruY39102Eje5 EUaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to; bh=VQeedh6BfvKYTXTinMgEwYX1hmDfWqexHTPp/mwcOQw=; b=pzW6SU4rnLtvQ4MyoGYa5SjVEVj2aMKU6jgIO2qsgXKdkM1Yc+yCY12OV9sl2Lcttz 0qjaSi9aNMCNwVLhT59zJMiM75dOWoxzUacdCUi8gvX2IzFkrL4cK+Fzz9zAkcAksVop A1oCYhBXwdbqjvuAGfAzLcJfRVl9FPtMn4GC7T2ffqYNK9AAE/RMljw7fBaRPF7wBJj8 2NrTDpdbTifyctDSyl1BPstSpPwjgq5mWc1pcx+PWsC4ZT4HY5jj2MEDWMgHC0APbVjl aRzKScu6/Q5EAtV8NlQcta1xepEoIuQqBcYWOhQ1oogpv57E35lxyryXA6/d2ymi/9Us 5m/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=fJTh+57H; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id sd5si39863848ejc.8.2021.12.01.05.39.31; Wed, 01 Dec 2021 05:39:32 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=fJTh+57H; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D36BA68AF73; Wed, 1 Dec 2021 15:39:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4ADF268ADC0 for ; Wed, 1 Dec 2021 15:39:22 +0200 (EET) Received: by mail-pg1-f174.google.com with SMTP id 133so5491362pgc.12 for ; Wed, 01 Dec 2021 05:39:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id; bh=u7WzSu2mlYLTlpGfMFblgGs4pVKl/ekyaCi749YLYx0=; b=fJTh+57Hs3KR7kXziuZCIgndKIdGaSlwJ+j40h15S3Bs/4Qq2dJCEkFK2VTSajrRxg ZjOz8HfAGhaUozHTwj8nWT0P27Txo+EZTqk1h1d0Qc6rnBWV7TOeVSdO7C9kAB3GO/7Z Xj15dk5/wz0X0FaH8RV5bOWCt45OoylHm8ZK0wXvVQXRNb69aoKFiJp0M7V19nci2Vwm 01rUNFQ9Gxz63QmD4o3gBjDLhL5ADNsFlwtDmjCpW8k9JzlOT82JA0oQ2ki10lQ8E0Cf rH0MbnGdGvfusJeannf85c8B+f43osHYTyYAHE/+D08G85wRRYPfCZA4ey8z8roJrL8T QW3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=u7WzSu2mlYLTlpGfMFblgGs4pVKl/ekyaCi749YLYx0=; b=a0KmSEgk3CZOCAyCl0wPar5g/clR0AnXa0OG7EC9tikgkVKn7DMVrXTCfif8/M5Ckz 4SBUe0BagSiYd72ciNp9HC9gFQR2bAy71apQkvXUzmQ8ByM+p4fPGbyg0AOp1JMpgt4p GB2/M4X36Sbu6dHSzw8biixLU+sRLvr3j0u/4xGA1erxppq0YHFOy2b+GFViwgn6UMmh lMqiGuu2IDtIKcsAeOhW7bPJC2CycYYLVi+LBoQhNM3JIynTUbhuxvWD2Fqa8Rs8sq4w qKCy4dBp0LkHKZGZXla1nJPHDK5J3m/fz02i8fxMou3kCqZVNG1tnFdACaijO8quUlua 4s7A== X-Gm-Message-State: AOAM531l6ffSpqawDiXhUmMwk6f7t7ooQVzoDE8Yldw28B+anZMSoDo4 ViBMOS+zDAV0j6wE+UOiwPT8VhUopqY= X-Received: by 2002:a63:834a:: with SMTP id h71mr4718868pge.361.1638365959947; Wed, 01 Dec 2021 05:39:19 -0800 (PST) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id s28sm26276914pfg.147.2021.12.01.05.39.18 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Dec 2021 05:39:19 -0800 (PST) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 1 Dec 2021 21:39:10 +0800 Message-Id: <1638365954-29420-1-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 Subject: [FFmpeg-devel] [PATCH 1/5] avformat/rtsp: make use of avio_get_str() to load the sdp 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: RtV8g47RDRm/ From: Limin Wang Signed-off-by: Limin Wang --- libavformat/rtsp.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index e6a4993..ec8be8b 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -2369,11 +2369,29 @@ static void append_source_addrs(char *buf, int size, const char *name, av_strlcatf(buf, size, ",%s", addrs[i]->addr); } +static char *read_sdp_str(AVIOContext *pb, int size) +{ + int n; + char *str; + + if (size < 0 || size == INT_MAX) + return NULL; + + str = av_malloc(size + 1); + if (!str) + return NULL; + n = avio_get_str(pb, size, str, size + 1); + if (n < size) + avio_skip(pb, size - n); + return str; +} + + static int sdp_read_header(AVFormatContext *s) { RTSPState *rt = s->priv_data; RTSPStream *rtsp_st; - int size, i, err; + int i, err; char *content; char url[MAX_URL_SIZE]; @@ -2386,19 +2404,11 @@ static int sdp_read_header(AVFormatContext *s) rt->lower_transport = RTSP_LOWER_TRANSPORT_CUSTOM; /* read the whole sdp file */ - /* XXX: better loading */ - content = av_malloc(SDP_MAX_SIZE); + content = read_sdp_str(s->pb, SDP_MAX_SIZE - 1); if (!content) { ff_network_close(); return AVERROR(ENOMEM); } - size = avio_read(s->pb, content, SDP_MAX_SIZE - 1); - if (size <= 0) { - av_free(content); - ff_network_close(); - return AVERROR_INVALIDDATA; - } - content[size] ='\0'; err = ff_sdp_parse(s, content); av_freep(&content);