summaryrefslogtreecommitdiff
path: root/libavcodec/indeo5.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-07-14 13:37:40 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-07-14 13:37:40 +0200
commita8e5fac1fb3fddeea829648139aa345af9cdc16c (patch)
tree46a212be2aa790088f37b483ebe5096e8f729b2d /libavcodec/indeo5.c
parentccb422a69728ac739b20ba2c67d49d265fd20fdb (diff)
parentdc79685195a45c9b8b17d7b93d118e0aefa45462 (diff)
downloadffmpeg-a8e5fac1fb3fddeea829648139aa345af9cdc16c.tar.gz
Merge remote-tracking branch 'qatar/master'
* qatar/master: indeo: Bound-check before applying transform Conflicts: libavcodec/indeo4.c libavcodec/indeo5.c libavcodec/ivi_common.c See: af388237093ed6df6f5118b34ef938a2ca2ffbda, 0846719dd11ab3f7a7caee13e7af71f71d913389 Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/indeo5.c')
-rw-r--r--libavcodec/indeo5.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/libavcodec/indeo5.c b/libavcodec/indeo5.c
index 65bd9f211a..5d5bec8626 100644
--- a/libavcodec/indeo5.c
+++ b/libavcodec/indeo5.c
@@ -153,44 +153,47 @@ static int decode_gop_header(IVI45DecContext *ctx, AVCodecContext *avctx)
/* select transform function and scan pattern according to plane and band number */
switch ((p << 2) + i) {
case 0:
- band->inv_transform = ff_ivi_inverse_slant_8x8;
- band->dc_transform = ff_ivi_dc_slant_2d;
- band->scan = ff_zigzag_direct;
- band->transform_size= 8;
+ band->inv_transform = ff_ivi_inverse_slant_8x8;
+ band->dc_transform = ff_ivi_dc_slant_2d;
+ band->scan = ff_zigzag_direct;
+ band->transform_size = 8;
break;
case 1:
- band->inv_transform = ff_ivi_row_slant8;
- band->dc_transform = ff_ivi_dc_row_slant;
- band->scan = ff_ivi_vertical_scan_8x8;
- band->transform_size= 8;
+ band->inv_transform = ff_ivi_row_slant8;
+ band->dc_transform = ff_ivi_dc_row_slant;
+ band->scan = ff_ivi_vertical_scan_8x8;
+ band->transform_size = 8;
break;
case 2:
- band->inv_transform = ff_ivi_col_slant8;
- band->dc_transform = ff_ivi_dc_col_slant;
- band->scan = ff_ivi_horizontal_scan_8x8;
- band->transform_size= 8;
+ band->inv_transform = ff_ivi_col_slant8;
+ band->dc_transform = ff_ivi_dc_col_slant;
+ band->scan = ff_ivi_horizontal_scan_8x8;
+ band->transform_size = 8;
break;
case 3:
- band->inv_transform = ff_ivi_put_pixels_8x8;
- band->dc_transform = ff_ivi_put_dc_pixel_8x8;
- band->scan = ff_ivi_horizontal_scan_8x8;
- band->transform_size= 8;
+ band->inv_transform = ff_ivi_put_pixels_8x8;
+ band->dc_transform = ff_ivi_put_dc_pixel_8x8;
+ band->scan = ff_ivi_horizontal_scan_8x8;
+ band->transform_size = 8;
break;
case 4:
- band->inv_transform = ff_ivi_inverse_slant_4x4;
- band->dc_transform = ff_ivi_dc_slant_2d;
- band->scan = ff_ivi_direct_scan_4x4;
- band->transform_size= 4;
+ band->inv_transform = ff_ivi_inverse_slant_4x4;
+ band->dc_transform = ff_ivi_dc_slant_2d;
+ band->scan = ff_ivi_direct_scan_4x4;
+ band->transform_size = 4;
break;
}
band->is_2d_trans = band->inv_transform == ff_ivi_inverse_slant_8x8 ||
band->inv_transform == ff_ivi_inverse_slant_4x4;
+ if (band->transform_size != band->blk_size)
+ return AVERROR_INVALIDDATA;
+
/* select dequant matrix according to plane and band number */
if (!p) {
quant_mat = (pic_conf.luma_bands > 1) ? i+1 : 0;