[FFmpeg-devel] avformat/hlsenc: ffio_free_dyn_buf the oc->pb at hls_write_trailer

Submitted by Steven Liu on Sept. 9, 2019, 6:15 a.m.

Details

Message ID 20190909061521.83665-1-lq@chinaffmpeg.org
State Accepted
Commit 9ff8fbda6598ec6ce231e81e756e2c68e9c8f59f
Headers show

Commit Message

Steven Liu Sept. 9, 2019, 6:15 a.m.
fix memleak at hls_write_trailer

Found-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
---
 libavformat/hlsenc.c | 1 +
 1 file changed, 1 insertion(+)

Comments

lance.lmwang@gmail.com Sept. 10, 2019, 2:23 p.m.
Maybe it's better to change the subject from:
avformat/hlsenc: ffio_free_dyn_buf the oc->pb at hls_write_trailer
to
avformat/hlsenc: fix memleak at hls_write_trailer

On Mon, Sep 09, 2019 at 02:15:21PM +0800, Steven Liu wrote:
> fix memleak at hls_write_trailer
> 
> Found-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
> ---
>  libavformat/hlsenc.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index f881bb9d60..218bfb2cba 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -2641,6 +2641,7 @@ failed:
>              ff_format_io_close(s, &vs->out);
>              hls_window(s, 1, vs);
>          }
> +        ffio_free_dyn_buf(&oc->pb);
>          avformat_free_context(oc);
>  
>          vs->avf = NULL;
> -- 
> 2.17.2 (Apple Git-113)
> 
> 
> 
> _______________________________________________
> 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".
Andreas Rheinhardt Sept. 11, 2019, 12:50 p.m.
Steven Liu:
> fix memleak at hls_write_trailer
> 
> Found-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
> ---
>  libavformat/hlsenc.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index f881bb9d60..218bfb2cba 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -2641,6 +2641,7 @@ failed:
>              ff_format_io_close(s, &vs->out);
>              hls_window(s, 1, vs);
>          }
> +        ffio_free_dyn_buf(&oc->pb);
>          avformat_free_context(oc);
>  
>          vs->avf = NULL;
> 
This patch fixes the memleaks I reported. I don't know if anything
ever gets written in av_write_trailer(oc); if yes, it will be
discarded and not output. But if you are ok with this (or know for
sure that it won't happen), it's fine.
There are other memleaks, though: A big one when using HLS_SINGLE_FILE
(more on this in another mail) and then there are three places in
hls_write_trailer where you simply return AVERROR(ENOMEM) when there
is not enough memory available for another string. This guarantees leaks.

- Andreas

Patch hide | download patch | download mbox

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index f881bb9d60..218bfb2cba 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -2641,6 +2641,7 @@  failed:
             ff_format_io_close(s, &vs->out);
             hls_window(s, 1, vs);
         }
+        ffio_free_dyn_buf(&oc->pb);
         avformat_free_context(oc);
 
         vs->avf = NULL;