summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarish Mahendrakar <harish.mahendrakar@ittiam.com>2016-04-14 14:25:51 +0530
committerMSe <mse1969@posteo.de>2017-07-06 23:51:19 +0200
commit60615b72a0c5ec729aeb99f637d90e119a9dc7b0 (patch)
tree4a34005e3bcf32e37e333bc07ee6c9dbf0542b23
parentd87a66d278072751941571867ef1674c274e88d8 (diff)
downloadandroid_external_libhevc-60615b72a0c5ec729aeb99f637d90e119a9dc7b0.tar.gz
android_external_libhevc-60615b72a0c5ec729aeb99f637d90e119a9dc7b0.tar.bz2
android_external_libhevc-60615b72a0c5ec729aeb99f637d90e119a9dc7b0.zip
DO NOT MERGE Handle streams with change in max_dec_buffering/num_reorder_frames
without resolution change backported from master as part of fixing a security issue on nyc-*. Bug: 34779227 Test: successful re-run of POC after patch AOSP-Change-Id: I404099ac24439b5f6eddc9265dc571929433b3ee (cherry picked from commit 27ad0d7bffb18dc47ab420789ca45f5481906903) CVE-2017-0675 Change-Id: I32be2ce0ec44acf60224f67d7d5b51c64ec87d90
-rw-r--r--decoder/ihevcd_parse_headers.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/decoder/ihevcd_parse_headers.c b/decoder/ihevcd_parse_headers.c
index 0f98094..6d85601 100644
--- a/decoder/ihevcd_parse_headers.c
+++ b/decoder/ihevcd_parse_headers.c
@@ -1334,6 +1334,27 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec)
UEV_PARSE("max_latency_increase", value, ps_bitstrm);
ps_sps->ai1_sps_max_latency_increase[i] = value;
}
+
+ /* Check if sps_max_dec_pic_buffering or sps_max_num_reorder_pics
+ has changed */
+ if(0 != ps_codec->i4_first_pic_done)
+ {
+ sps_t *ps_sps_old = ps_codec->s_parse.ps_sps;
+ if(ps_sps_old->ai1_sps_max_dec_pic_buffering[ps_sps_old->i1_sps_max_sub_layers - 1] !=
+ ps_sps->ai1_sps_max_dec_pic_buffering[ps_sps->i1_sps_max_sub_layers - 1])
+ {
+ ps_codec->i4_reset_flag = 1;
+ return (IHEVCD_ERROR_T)IVD_RES_CHANGED;
+ }
+
+ if(ps_sps_old->ai1_sps_max_num_reorder_pics[ps_sps_old->i1_sps_max_sub_layers - 1] !=
+ ps_sps->ai1_sps_max_num_reorder_pics[ps_sps->i1_sps_max_sub_layers - 1])
+ {
+ ps_codec->i4_reset_flag = 1;
+ return (IHEVCD_ERROR_T)IVD_RES_CHANGED;
+ }
+ }
+
UEV_PARSE("log2_min_coding_block_size_minus3", value, ps_bitstrm);
ps_sps->i1_log2_min_coding_block_size = value + 3;