avformat/mvdec: Check size for validity in var_read_string()
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 28 Oct 2014 15:42:05 +0000 (16:42 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 28 Oct 2014 16:06:16 +0000 (17:06 +0100)
Fixes out of array read
Fixes: asan_heap-oob_49b1e5_12_011.movie
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/mvdec.c

index 6e7c3ff..0f09498 100644 (file)
@@ -57,7 +57,12 @@ static int mv_probe(AVProbeData *p)
 static char *var_read_string(AVIOContext *pb, int size)
 {
     int n;
-    char *str = av_malloc(size + 1);
+    char *str;
+
+    if (size < 0 || size == INT_MAX)
+        return NULL;
+
+    str = av_malloc(size + 1);
     if (!str)
         return NULL;
     n = avio_get_str(pb, size, str, size + 1);