]> git.sesse.net Git - ffmpeg/commitdiff
avformat/swfdec: Fix memleaks on error
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Sun, 20 Sep 2020 10:07:19 +0000 (12:07 +0200)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Wed, 23 Sep 2020 15:09:01 +0000 (17:09 +0200)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavformat/swfdec.c

index 7ca8460420e561d778ad6e0ba6ec7b4dcdd5fb4e..91424623fe434c1aea201339d7414582d5c2285f 100644 (file)
@@ -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;