bmp: check available space when reading palette
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 19 Feb 2013 15:59:26 +0000 (16:59 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 19 Feb 2013 16:00:04 +0000 (17:00 +0100)
Fixes out of array read

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/bmp.c

index ea221bc..dddc818 100644 (file)
@@ -261,6 +261,10 @@ static int bmp_decode_frame(AVCodecContext *avctx,
         buf = buf0 + 14 + ihsize; //palette location
         // OS/2 bitmap, 3 bytes per palette entry
         if ((hsize-ihsize-14) < (colors << 2)) {
+            if ((hsize-ihsize-14) < colors * 3) {
+                av_log(avctx, AV_LOG_ERROR, "palette doesnt fit in packet\n");
+                return AVERROR_INVALIDDATA;
+            }
             for (i = 0; i < colors; i++)
                 ((uint32_t*)p->data[1])[i] = (0xFFU<<24) | bytestream_get_le24(&buf);
         } else {