avcodec/dxa: check dimensions
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 28 Oct 2014 14:26:42 +0000 (15:26 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 2 Nov 2014 10:14:25 +0000 (11:14 +0100)
Fixes out of array access
Fixes: asan_heap-oob_11222fb_21_020.dxa
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e70312dfc22c4e54d5716f28f28db8f99c74cc90)

Conflicts:

libavcodec/dxa.c

libavcodec/dxa.c

index 7bd74f3..52a0fef 100644 (file)
@@ -308,6 +308,11 @@ static av_cold int decode_init(AVCodecContext *avctx)
 
     avctx->pix_fmt = AV_PIX_FMT_PAL8;
 
+    if (avctx->width%4 || avctx->height%4) {
+        av_log(avctx, AV_LOG_ERROR, "dimensions are not a multiple of 4");
+        return AVERROR_INVALIDDATA;
+    }
+
     avcodec_get_frame_defaults(&c->pic);
     avcodec_get_frame_defaults(&c->prev);