OSDN Git Service

avformat/isom: free extradata on failure to read it
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 23 Dec 2013 17:09:58 +0000 (18:09 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 25 Dec 2013 15:25:17 +0000 (16:25 +0100)
Fixes use of uninitialized memory
Fixes: msan_uninit-mem_7f607d80f661_6965_mov00003.mqv
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/isom.c

index 8a85fe3..da789d6 100644 (file)
@@ -460,8 +460,11 @@ int ff_mp4_read_dec_config_descr(AVFormatContext *fc, AVStream *st, AVIOContext
         av_free(st->codec->extradata);
         if (ff_alloc_extradata(st->codec, len))
             return AVERROR(ENOMEM);
-        if ((ret = avio_read(pb, st->codec->extradata, len)) != len)
+        if ((ret = avio_read(pb, st->codec->extradata, len)) != len) {
+            av_freep(&st->codec->extradata);
+            st->codec->extradata_size = 0;
             return ret < 0 ? ret : AVERROR_INVALIDDATA;
+        }
         if (st->codec->codec_id == AV_CODEC_ID_AAC) {
             MPEG4AudioConfig cfg = {0};
             avpriv_mpeg4audio_get_config(&cfg, st->codec->extradata,