]> git.sesse.net Git - ffmpeg/commitdiff
avformat/ffmetadec: finalize AVBPrint on errors
authorMichael Niedermayer <michael@niedermayer.cc>
Tue, 20 Oct 2020 20:56:13 +0000 (22:56 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Wed, 21 Oct 2020 15:21:41 +0000 (17:21 +0200)
Fixes: memleak
Fixes: 26450/clusterfuzz-testcase-minimized-ffmpeg_dem_FFMETADATA_fuzzer-6249850443923456
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavformat/ffmetadec.c

index 0ea89fe3f346bc32dee191cb4887835632edbcc2..9fcba08490193e815bc86c396ab39c7325c7a936 100644 (file)
@@ -185,7 +185,7 @@ static int read_header(AVFormatContext *s)
             AVStream *st = avformat_new_stream(s, NULL);
 
             if (!st)
-                return AVERROR(ENOMEM);
+                goto nomem;
 
             st->codecpar->codec_type = AVMEDIA_TYPE_DATA;
             st->codecpar->codec_id   = AV_CODEC_ID_FFMETADATA;
@@ -195,7 +195,7 @@ static int read_header(AVFormatContext *s)
             AVChapter *ch = read_chapter(s);
 
             if (!ch)
-                return AVERROR(ENOMEM);
+                goto nomem;
 
             m = &ch->metadata;
         } else
@@ -211,6 +211,10 @@ static int read_header(AVFormatContext *s)
                                    AV_TIME_BASE_Q);
 
     return 0;
+nomem:
+    av_bprint_finalize(&bp, NULL);
+
+    return AVERROR(ENOMEM);
 }
 
 static int read_packet(AVFormatContext *s, AVPacket *pkt)