diff mbox

[FFmpeg-devel,v2,6/8] avformat/smacker: fix memleak when avformat_new_stream failed

Message ID 20191010020756.30820-6-lq@chinaffmpeg.org
State New
Headers show

Commit Message

Liu Steven Oct. 10, 2019, 2:07 a.m. UTC
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
---
 libavformat/smacker.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/libavformat/smacker.c b/libavformat/smacker.c
index b5c858aa9b..239894dad0 100644
--- a/libavformat/smacker.c
+++ b/libavformat/smacker.c
@@ -172,8 +172,11 @@  static int smacker_read_header(AVFormatContext *s)
 
     /* init video codec */
     st = avformat_new_stream(s, NULL);
-    if (!st)
+    if (!st) {
+        av_freep(&smk->frm_size);
+        av_freep(&smk->frm_flags);
         return AVERROR(ENOMEM);
+    }
     smk->videoindex = st->index;
     st->codecpar->width = smk->width;
     st->codecpar->height = smk->height;
@@ -195,8 +198,11 @@  static int smacker_read_header(AVFormatContext *s)
         smk->indexes[i] = -1;
         if (smk->rates[i]) {
             ast[i] = avformat_new_stream(s, NULL);
-            if (!ast[i])
+            if (!ast[i]) {
+                av_freep(&smk->frm_size);
+                av_freep(&smk->frm_flags);
                 return AVERROR(ENOMEM);
+            }
             smk->indexes[i] = ast[i]->index;
             ast[i]->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
             if (smk->aflags[i] & SMK_AUD_BINKAUD) {