From d272cd636982075fb2e8fd64d4de31fa7f82c148 Mon Sep 17 00:00:00 2001 From: Harish Mahendrakar Date: Fri, 13 Jan 2017 17:08:35 +0530 Subject: [PATCH] DO NOT MERGE Added check for invalid log2_max_transform_block_size in SPS Bug: 33918236 Bug: 33964497 Bug: 33965905 Bug: 33862021 Change-Id: If121221d0f6e983c05d95d123af9bed378d1961f --- decoder/ihevcd_parse_headers.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/decoder/ihevcd_parse_headers.c b/decoder/ihevcd_parse_headers.c index 7d48c98..7c9dde1 100644 --- a/decoder/ihevcd_parse_headers.c +++ b/decoder/ihevcd_parse_headers.c @@ -1197,6 +1197,7 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) sps_t *ps_sps; profile_tier_lvl_info_t s_ptl; bitstrm_t *ps_bitstrm = &ps_codec->s_parse.s_bitstrm; + WORD32 ctb_log2_size_y = 0; BITS_PARSE("video_parameter_set_id", value, ps_bitstrm, 4); @@ -1355,6 +1356,8 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) UEV_PARSE("log2_diff_max_min_coding_block_size", value, ps_bitstrm); ps_sps->i1_log2_diff_max_min_coding_block_size = value; + ctb_log2_size_y = ps_sps->i1_log2_min_coding_block_size + ps_sps->i1_log2_diff_max_min_coding_block_size; + UEV_PARSE("log2_min_transform_block_size_minus2", value, ps_bitstrm); ps_sps->i1_log2_min_transform_block_size = value + 2; @@ -1364,6 +1367,12 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) ps_sps->i1_log2_max_transform_block_size = ps_sps->i1_log2_min_transform_block_size + ps_sps->i1_log2_diff_max_min_transform_block_size; + if ((ps_sps->i1_log2_max_transform_block_size < 0) || + (ps_sps->i1_log2_max_transform_block_size > MIN(ctb_log2_size_y, 5))) + { + return IHEVCD_INVALID_PARAMETER; + } + ps_sps->i1_log2_ctb_size = ps_sps->i1_log2_min_coding_block_size + ps_sps->i1_log2_diff_max_min_coding_block_size;