avcodec/vp7: check buffer size
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 29 Mar 2014 03:25:50 +0000 (04:25 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 29 Mar 2014 03:27:00 +0000 (04:27 +0100)
Fixes overread
Fixes Ticket 3501
Found-by: Piotr Bandurski <ami_stuff@o2.pl>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/vp8.c

index 45a19a0..c15111e 100644 (file)
@@ -434,6 +434,11 @@ static int vp7_decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_si
     s->invisible = 0;
     part1_size   = AV_RL24(buf) >> 4;
 
+    if (buf_size < 4 - s->profile + part1_size) {
+        av_log(s->avctx, AV_LOG_ERROR, "Buffer size %d is too small, needed : %d\n", buf_size, 4 - s->profile + part1_size);
+        return AVERROR_INVALIDDATA;
+    }
+
     buf      += 4 - s->profile;
     buf_size -= 4 - s->profile;