avcodec/h264: Fix memleak in case of ff_h264_decode_extradata() failure
authorMichael Niedermayer <michael@niedermayer.cc>
Thu, 28 Jan 2016 02:18:20 +0000 (03:18 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Thu, 28 Jan 2016 03:15:18 +0000 (04:15 +0100)
Fixes Ticket5139

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/h264.c

index 2361660..28b14cd 100644 (file)
@@ -52,6 +52,8 @@
 #include "thread.h"
 #include "vdpau_compat.h"
 
+static int h264_decode_end(AVCodecContext *avctx);
+
 const uint16_t ff_h264_mb_sizes[4] = { 256, 384, 512, 768 };
 
 int avpriv_h264_has_num_reorder_frames(AVCodecContext *avctx)
@@ -679,7 +681,7 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx)
     if (avctx->extradata_size > 0 && avctx->extradata) {
         ret = ff_h264_decode_extradata(h, avctx->extradata, avctx->extradata_size);
         if (ret < 0) {
-            ff_h264_free_context(h);
+            h264_decode_end(avctx);
             return ret;
         }
     }