[FFmpeg-cvslog] avformat/swfdec: Fix memleaks on error

Andreas Rheinhardt git at videolan.org
Wed Sep 23 18:52:50 EEST 2020


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Sun Sep 20 12:07:19 2020 +0200| [28dc0c20cc51346ba7891a324b35e0ef6295c9dd] | committer: Andreas Rheinhardt

avformat/swfdec: Fix memleaks on error

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=28dc0c20cc51346ba7891a324b35e0ef6295c9dd
---

 libavformat/swfdec.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavformat/swfdec.c b/libavformat/swfdec.c
index 7ca8460420..91424623fe 100644
--- a/libavformat/swfdec.c
+++ b/libavformat/swfdec.c
@@ -158,13 +158,18 @@ static int swf_read_header(AVFormatContext *s)
         swf->zbuf_out = av_malloc(ZBUF_SIZE);
         swf->zpb = avio_alloc_context(swf->zbuf_out, ZBUF_SIZE, 0, s,
                                       zlib_refill, NULL, NULL);
-        if (!swf->zbuf_in || !swf->zbuf_out || !swf->zpb)
+        if (!swf->zbuf_in || !swf->zbuf_out || !swf->zpb) {
+            av_freep(&swf->zbuf_in);
+            av_freep(&swf->zbuf_out);
+            avio_context_free(&swf->zpb);
             return AVERROR(ENOMEM);
+        }
         swf->zpb->seekable = 0;
         if (inflateInit(&swf->zstream) != Z_OK) {
             av_log(s, AV_LOG_ERROR, "Unable to init zlib context\n");
             av_freep(&swf->zbuf_in);
             av_freep(&swf->zbuf_out);
+            avio_context_free(&swf->zpb);
             return AVERROR(EINVAL);
         }
         pb = swf->zpb;



More information about the ffmpeg-cvslog mailing list