[FFmpeg-devel] [PATCH v2 4/6] avformat/rtsp: check content_ptr before memory allocate

Martin Storsjö martin at martin.st
Tue Dec 7 11:30:11 EET 2021


On Mon, 6 Dec 2021, lance.lmwang at gmail.com wrote:

> From: Limin Wang <lance.lmwang at gmail.com>
>
> Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
> ---
> libavformat/rtsp.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
> index 3e4a68a..b3d1e91 100644
> --- a/libavformat/rtsp.c
> +++ b/libavformat/rtsp.c
> @@ -1240,7 +1240,7 @@ start:
>         av_strlcpy(rt->session_id, reply->session_id, sizeof(rt->session_id));
>
>     content_length = reply->content_length;
> -    if (content_length > 0) {
> +    if (content_ptr && content_length > 0) {
>         /* leave some room for a trailing '\0' (useful for simple parsing) */
>         content = av_malloc(content_length + 1);
>         if (!content)
> @@ -1250,11 +1250,8 @@ start:
>             return AVERROR(EIO);
>         }
>         content[content_length] = '\0';
> -    }
> -    if (content_ptr)
>         *content_ptr = content;
> -    else
> -        av_freep(&content);
> +    }

I don't think this is right.

If the reply that we read contain a body of contents, but the caller 
didn't pass any content_ptr, then we still need to read and consume the 
body of contents from the stream, even if we don't pass it to the caller. 
(Maybe we should warn in this case, that there was some potentially 
relevant data that the caller didn't care about?) But if we don't read it, 
like this patch does, we would end up desynced from the protocol stream.

// Martin



More information about the ffmpeg-devel mailing list