diff options
author | Vivek Jadhav <vivek.jadhav@ittiam.com> | 2023-10-23 17:12:00 +0530 |
---|---|---|
committer | Harish Mahendrakar <harish.mahendrakar@ittiam.com> | 2023-10-25 22:24:22 -0700 |
commit | d819e51e1133825e41de405dbb301d6a33521d35 (patch) | |
tree | 3f9c82196729d079135cbba58b4eabae55d6f22f | |
parent | 3c03b2bcf77bb2de9d4fa4bfdf77b818fd7c492a (diff) | |
download | libhevc-d819e51e1133825e41de405dbb301d6a33521d35.tar.gz |
decoder: Handle incomplete slice received during decoding
If a partial or incomplete slice is received it
sets prev_slice_incomplete_flag and i4_slice_error and returns
back with IHEVCD_IGNORE_SLICE
Bug: oss-fuzz:61331
Test: ./hevc_dec_fuzzer
-rw-r--r-- | decoder/ihevcd_parse_slice_header.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/decoder/ihevcd_parse_slice_header.c b/decoder/ihevcd_parse_slice_header.c index 9742456..0fedeb0 100644 --- a/decoder/ihevcd_parse_slice_header.c +++ b/decoder/ihevcd_parse_slice_header.c @@ -808,11 +808,12 @@ IHEVCD_ERROR_T ihevcd_parse_slice_header(codec_t *ps_codec, if(ps_codec->i4_pic_present) { prev_slice_incomplete_flag = 1; + ps_codec->i4_slice_error = 1; + ps_codec->s_parse.i4_cur_slice_idx--; + if(ps_codec->s_parse.i4_cur_slice_idx < 0) + ps_codec->s_parse.i4_cur_slice_idx = 0; } - else - { - return IHEVCD_IGNORE_SLICE; - } + return IHEVCD_IGNORE_SLICE; } /* If the slice address is less than the next CTB's index, * extra CTBs have been decoded in the previous slice. |