vmnc: check input size before reading chunk header, fix overread
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 14 Nov 2012 01:50:59 +0000 (02:50 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 14 Nov 2012 01:51:38 +0000 (02:51 +0100)
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/vmnc.c

index 62a1312..d3c86f1 100644 (file)
@@ -332,6 +332,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
     src += 2;
     chunks = AV_RB16(src); src += 2;
     while(chunks--) {
+        if(buf_size - (src - buf) < 12) {
+            av_log(avctx, AV_LOG_ERROR, "Premature end of data!\n");
+            return -1;
+        }
         dx = AV_RB16(src); src += 2;
         dy = AV_RB16(src); src += 2;
         w  = AV_RB16(src); src += 2;