OSDN Git Service

avformat/mov: Check avio_read() return code in mov_read_extradata() and shrink the...
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 14 Dec 2013 22:59:39 +0000 (23:59 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 14 Dec 2013 23:16:53 +0000 (00:16 +0100)
Fixes use of uninitialized data
Fixes: msan_uninit-mem_7ff57193e77e_2715_RAW512K_Stream_004.mov
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/mov.c

index 0157a7d..7ca4f92 100644 (file)
@@ -1002,7 +1002,13 @@ static int mov_read_extradata(MOVContext *c, AVIOContext *pb, MOVAtom atom,
     st->codec->extradata_size= size - FF_INPUT_BUFFER_PADDING_SIZE;
     AV_WB32(       buf    , atom.size + 8);
     AV_WL32(       buf + 4, atom.type);
-    avio_read(pb, buf + 8, atom.size);
+    err = avio_read(pb, buf + 8, atom.size);
+    if (err < 0) {
+        return err;
+    } else if (err < atom.size) {
+        av_log(c->fc, AV_LOG_WARNING, "truncated extradata\n");
+        st->codec->extradata_size -= atom.size - err;
+    }
     return 0;
 }