summaryrefslogtreecommitdiff
path: root/libavcodec/indeo3.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-09-29 10:39:49 +0200
committerAnton Khirnov <anton@khirnov.net>2012-09-29 19:12:04 +0200
commite4d4044339b9c3b0f45f7203cd026eda3c0414c0 (patch)
tree41bdf5535dd02237e930429e365b04443bfc0526 /libavcodec/indeo3.c
parent065b3a1cfa3f23aedf76244b3f3883ba913173ff (diff)
indeo3: fix out of cell write.
Fixes CVE-2012-2776. CC:libav-stable@libav.org Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Diffstat (limited to 'libavcodec/indeo3.c')
-rw-r--r--libavcodec/indeo3.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c
index 0f4adc473c..18d9e10270 100644
--- a/libavcodec/indeo3.c
+++ b/libavcodec/indeo3.c
@@ -421,6 +421,9 @@ static int decode_cell_data(Cell *cell, uint8_t *block, uint8_t *ref_block,
blk_row_offset = (row_offset << (2 + v_zoom)) - (cell->width << 2);
line_offset = v_zoom ? row_offset : 0;
+ if (cell->height & v_zoom || cell->width & h_zoom)
+ return IV3_BAD_DATA;
+
for (y = 0; y < cell->height; is_first_row = 0, y += 1 + v_zoom) {
for (x = 0; x < cell->width; x += 1 + h_zoom) {
ref = ref_block;