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>
Tue, 28 Oct 2014 15:05:18 +0000 (16:05 +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)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/dxa.c

index 0f64b5e..c8e3f71 100644 (file)
@@ -329,6 +329,11 @@ static av_cold int decode_init(AVCodecContext *avctx)
 {
     DxaDecContext * const c = avctx->priv_data;
 
+    if (avctx->width%4 || avctx->height%4) {
+        avpriv_request_sample(avctx, "dimensions are not a multiple of 4");
+        return AVERROR_INVALIDDATA;
+    }
+
     c->prev = av_frame_alloc();
     if (!c->prev)
         return AVERROR(ENOMEM);