From: Jim Bankoski Date: Tue, 1 Jul 2014 17:26:26 +0000 (-0700) Subject: validate uv block size when reading partition X-Git-Tag: v1.4.0~1286^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=abf0df08f167324b9c47c77465b1f3e6ee2ce067;p=libvpx validate uv block size when reading partition Change-Id: I74fc5f1a7bab3128cdd49441b83ec3a25aee65ca --- 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 {