aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchamarthi.kishore <chamarthi.kishore@ittiam.com>2023-02-16 17:18:29 +0530
committerHarish Mahendrakar <harish.mahendrakar@ittiam.com>2023-02-16 10:07:46 -0800
commit992407f6c3e77c9ff84684c77072b913eaa3152b (patch)
tree424c39c4bff1bb0550f7ec25a9d1b766b48470e1
parent7f19ac220647a58262bf08262049f7340030e1bf (diff)
downloadlibavc-992407f6c3e77c9ff84684c77072b913eaa3152b.tar.gz
Resolved invalid memory access to Weighted pred offsets
BUG=oss-fuzz:56013 Test: svc_dec_fuzzer
-rw-r--r--decoder/svc/isvcd_api.c2
-rw-r--r--decoder/svc/isvcd_parse_epslice.c23
2 files changed, 1 insertions, 24 deletions
diff --git a/decoder/svc/isvcd_api.c b/decoder/svc/isvcd_api.c
index 881ecf5..3ac3984 100644
--- a/decoder/svc/isvcd_api.c
+++ b/decoder/svc/isvcd_api.c
@@ -5288,7 +5288,7 @@ WORD32 isvcd_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op)
ps_dec_op->u4_frame_decoded_flag = 0;
ret = isvcd_parse_nal_unit(ps_svc_lyr_dec, ps_cur_node->i4_nal_ref_idc);
- if(((ret != OK)) && (u1_res_id != (u1_num_res_lyrs - 1)))
+ if(ret != OK)
{
ps_svcd_ctxt->u1_parse_nal_unit_error = 1;
break;
diff --git a/decoder/svc/isvcd_parse_epslice.c b/decoder/svc/isvcd_parse_epslice.c
index dc0e7be..8d8c449 100644
--- a/decoder/svc/isvcd_parse_epslice.c
+++ b/decoder/svc/isvcd_parse_epslice.c
@@ -3194,12 +3194,7 @@ WORD32 isvcd_parse_interlayer_resamp_func_init(svc_dec_lyr_struct_t *ps_svc_lyr_
{
dec_struct_t *ps_dec = &ps_svc_lyr_dec->s_dec;
dec_slice_params_t *ps_slice = ps_dec->ps_cur_slice;
- svc_dec_ctxt_t *ps_svcd_ctxt = ps_svc_lyr_dec->ps_svcd_ctxt;
WORD32 ret = OK;
- WORD32 num_mb_skipped;
- WORD32 prev_slice_err;
- pocstruct_t temp_poc;
- WORD32 ht_in_mbs;
if(TARGET_LAYER != ps_svc_lyr_dec->u1_layer_identifier)
{
@@ -3208,9 +3203,6 @@ WORD32 isvcd_parse_interlayer_resamp_func_init(svc_dec_lyr_struct_t *ps_svc_lyr_
ps_slice->i1_slice_beta_offset = ps_svc_lyr_dec->i1_inter_lyr_slice_beta_offset;
}
- ht_in_mbs = ps_dec->u2_pic_ht >> (4 + ps_dec->ps_cur_slice->u1_field_pic_flag);
- num_mb_skipped = (ht_in_mbs * ps_dec->u2_frm_wd_in_mbs) - ps_dec->u2_total_mbs_coded;
-
if(0 == u2_first_mb_in_slice)
{
ret = isvcd_populate_res_prms(ps_svc_lyr_dec);
@@ -3225,21 +3217,6 @@ WORD32 isvcd_parse_interlayer_resamp_func_init(svc_dec_lyr_struct_t *ps_svc_lyr_
ret = isvcd_residual_samp_res_init(ps_svc_lyr_dec);
if(ret != OK) return NOT_OK;
}
- if(ps_dec->u4_first_slice_in_pic && (ps_dec->u4_pic_buf_got == 0))
- prev_slice_err = 1;
- else
- prev_slice_err = 2;
-
- if(ps_dec->u4_first_slice_in_pic && (ps_dec->u2_total_mbs_coded == 0)) prev_slice_err = 1;
-
- if((ps_svc_lyr_dec->u1_layer_identifier == TARGET_LAYER) &&
- (1 == ps_svcd_ctxt->u1_parse_nal_unit_error))
- {
- ret = isvcd_mark_err_slice_skip(
- ps_svc_lyr_dec, num_mb_skipped, ps_dec->u1_nal_unit_type == IDR_SLICE_NAL,
- ps_dec->ps_cur_slice->u2_frame_num, &temp_poc, prev_slice_err);
- return ret;
- }
return ret;
}