aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivek Jadhav <vivek.jadhav@ittiam.com>2023-10-23 17:12:00 +0530
committerHarish Mahendrakar <harish.mahendrakar@ittiam.com>2023-10-25 22:24:22 -0700
commitd819e51e1133825e41de405dbb301d6a33521d35 (patch)
tree3f9c82196729d079135cbba58b4eabae55d6f22f
parent3c03b2bcf77bb2de9d4fa4bfdf77b818fd7c492a (diff)
downloadlibhevc-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.c9
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.