On Thu, 2 Dec 2021, lance.lmw...@gmail.com wrote:

From: Limin Wang <lance.lmw...@gmail.com>

Signed-off-by: Limin Wang <lance.lmw...@gmail.com>
---
libavformat/rtsp.c | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index e6a4993..249a019 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -2373,9 +2373,10 @@ 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];
+    AVBPrint bp;

    if (!ff_network_init())
        return AVERROR(EIO);
@@ -2386,22 +2387,16 @@ 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);
-    if (!content) {
+    av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
+    err = avio_read_to_bprint(s->pb, &bp, INT_MAX);
+    if (err < 0 ) {
        ff_network_close();
-        return AVERROR(ENOMEM);
+        av_bprint_finalize(&bp, NULL);
+        return err;
    }
-    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';
-
+    content = bp.str;
    err = ff_sdp_parse(s, content);

The content variable could be eliminated here too (to avoid leaving a dangling pointer local variable after freeing it).

-    av_freep(&content);
+    av_bprint_finalize(&bp, NULL);
    if (err) goto fail;

    /* open each RTP stream */
--
1.8.3.1

This patch seems ok to me - maybe it'd be good to mention in the commit message that this allows getting rid of the hardcoded max size here, to explain the "why" for the patch, not only the "what"?

Would you be interested in getting rid of the same hardcoded max size in rtspdec.c too?

// Martin

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to