From abf0df08f167324b9c47c77465b1f3e6ee2ce067 Mon Sep 17 00:00:00 2001 From: Jim Bankoski Date: Tue, 1 Jul 2014 10:26:26 -0700 Subject: [PATCH] validate uv block size when reading partition Change-Id: I74fc5f1a7bab3128cdd49441b83ec3a25aee65ca --- vp9/decoder/vp9_decodeframe.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index 404a34525..8efae959a 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -410,13 +410,17 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd, vp9_reader* r, BLOCK_SIZE bsize) { const int hbs = num_8x8_blocks_wide_lookup[bsize] / 2; PARTITION_TYPE partition; - BLOCK_SIZE subsize; + BLOCK_SIZE subsize, uv_subsize; if (mi_row >= cm->mi_rows || mi_col >= cm->mi_cols) return; partition = read_partition(cm, xd, hbs, mi_row, mi_col, bsize, r); subsize = get_subsize(bsize, partition); + uv_subsize = ss_size_lookup[subsize][cm->subsampling_x][cm->subsampling_y]; + if (subsize >= BLOCK_8X8 && uv_subsize == BLOCK_INVALID) + vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME, + "Invalid block size."); if (subsize < BLOCK_8X8) { decode_block(cm, xd, tile, mi_row, mi_col, r, subsize); } else { -- 2.50.1