diff options
author | Rakesh Kumar <rakesh.kumar@ittiam.com> | 2018-11-12 18:00:27 +0530 |
---|---|---|
committer | Ray Essick <essick@google.com> | 2018-11-14 13:42:41 -0800 |
commit | fdbbd60bfebe48c0539897d7eeeeb5816e59ce1b (patch) | |
tree | 6389db2b8d92184055bbe8b562406175e2cccfd2 /decoder | |
parent | 400d114e64893f8d27fd72a7f9b10f41c7c1cda8 (diff) | |
download | libhevc-fdbbd60bfebe48c0539897d7eeeeb5816e59ce1b.tar.gz |
Decoder: Signal IVD_RES_CHANGED error for change in crop params
IVD_RES_CHANGED was not signaled when crop parameters changed, i.e.
display dimensions changed without change in decode dimensions.
In such cases, if output buffer was allocated as per the current
dimension being decoded, without IVD_RES_CHANGED signalled, there can be
an OOB write if the new buffer is smaller than the frame being returned
as output
Bug: 118453553
Test: vendor
Change-Id: Ic74c6fb9612403f75a8f9ddb3a93861bca82cf16
Diffstat (limited to 'decoder')
-rw-r--r-- | decoder/ihevcd_parse_headers.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/decoder/ihevcd_parse_headers.c b/decoder/ihevcd_parse_headers.c index 22836a0..a50efb8 100644 --- a/decoder/ihevcd_parse_headers.c +++ b/decoder/ihevcd_parse_headers.c @@ -1599,6 +1599,18 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) if((0 >= disp_wd) || (0 >= disp_ht)) return IHEVCD_INVALID_PARAMETER; + if((0 != ps_codec->u4_allocate_dynamic_done) && + ((ps_codec->i4_disp_wd != disp_wd) || + (ps_codec->i4_disp_ht != disp_ht))) + { + if(0 == ps_codec->i4_first_pic_done) + { + return IHEVCD_INVALID_PARAMETER; + } + ps_codec->i4_reset_flag = 1; + return (IHEVCD_ERROR_T)IVD_RES_CHANGED; + } + ps_codec->i4_disp_wd = disp_wd; ps_codec->i4_disp_ht = disp_ht; |