diff options
author | Rajat Kumar <rajat.kumar@ittiam.com> | 2020-08-06 09:02:42 +0530 |
---|---|---|
committer | rajat.kumar@ittiam.com <rajat.kumar@ittiam.com> | 2020-10-08 20:31:21 +0530 |
commit | 117d5bda525c51d641e701458887b52aa74e9cec (patch) | |
tree | 90668b76edf6e0a723cf7a13d1da62f21b6314d2 | |
parent | 6398ab8de5856135ee621d41bba4a4ed55b96fb7 (diff) | |
download | libxaac-117d5bda525c51d641e701458887b52aa74e9cec.tar.gz |
Removal of pointer arithmetic code sections.
Code changes to replace sections that work on pointer
arithmetic logic to avoid undefined behavior.
Bug:Based on manual review
Test:xaacdec
Change-Id: I02bcb356d76b11cd2912478c4263d5918c37e1a6
-rw-r--r-- | decoder/drc_src/impd_drc_init.c | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/decoder/drc_src/impd_drc_init.c b/decoder/drc_src/impd_drc_init.c index cc6e2ed..6a41fc0 100644 --- a/decoder/drc_src/impd_drc_init.c +++ b/decoder/drc_src/impd_drc_init.c @@ -274,81 +274,81 @@ IA_ERRORCODE impd_drc_set_default_bitstream_config( } IA_ERRORCODE impd_drc_set_struct_pointer(ia_drc_api_struct *p_obj_drc) { - SIZE_T persistent_ptr = (SIZE_T)p_obj_drc->p_state->persistent_ptr; + pUWORD8 persistent_ptr = (pUWORD8)p_obj_drc->p_state->persistent_ptr; - SIZE_T persistent_size_consumed = 0; + UWORD64 persistent_size_consumed = 0; p_obj_drc->str_payload.pstr_bitstream_dec = (ia_drc_bits_dec_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_bits_dec_struct); + persistent_ptr += sizeof(ia_drc_bits_dec_struct); p_obj_drc->str_payload.pstr_gain_dec[0] = (ia_drc_gain_dec_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_gain_dec_struct); + persistent_ptr += sizeof(ia_drc_gain_dec_struct); p_obj_drc->str_payload.pstr_gain_dec[1] = (ia_drc_gain_dec_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_gain_dec_struct); + persistent_ptr += sizeof(ia_drc_gain_dec_struct); p_obj_drc->str_payload.pstr_loudness_info = (ia_drc_loudness_info_set_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_loudness_info_set_struct); + persistent_ptr += sizeof(ia_drc_loudness_info_set_struct); p_obj_drc->str_payload.pstr_drc_gain = (ia_drc_gain_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_gain_struct); + persistent_ptr += sizeof(ia_drc_gain_struct); p_obj_drc->str_payload.pstr_drc_interface = (ia_drc_interface_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_interface_struct); + persistent_ptr += sizeof(ia_drc_interface_struct); p_obj_drc->str_payload.pstr_drc_config = (ia_drc_config *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_config); + persistent_ptr += sizeof(ia_drc_config); p_obj_drc->str_payload.pstr_selection_proc = (ia_drc_sel_pro_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_sel_pro_struct); + persistent_ptr += sizeof(ia_drc_sel_pro_struct); p_obj_drc->str_bit_handler.it_bit_buf = (UWORD8 *)persistent_ptr; - persistent_ptr = persistent_ptr + MAX_DRC_BS_BUF_SIZE; + persistent_ptr += MAX_DRC_BS_BUF_SIZE; p_obj_drc->str_payload.pstr_drc_sel_proc_params = (ia_drc_sel_proc_params_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_sel_proc_params_struct); + persistent_ptr += sizeof(ia_drc_sel_proc_params_struct); p_obj_drc->str_payload.pstr_drc_sel_proc_output = (ia_drc_sel_proc_output_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_sel_proc_output_struct); + persistent_ptr += sizeof(ia_drc_sel_proc_output_struct); p_obj_drc->str_bit_handler.bitstream_drc_config = (UWORD8 *)persistent_ptr; - persistent_ptr = persistent_ptr + MAX_BS_BUF_SIZE; + persistent_ptr += MAX_BS_BUF_SIZE; p_obj_drc->str_bit_handler.bitstream_loudness_info = (UWORD8 *)persistent_ptr; - persistent_ptr = persistent_ptr + MAX_BS_BUF_SIZE; + persistent_ptr += MAX_BS_BUF_SIZE; p_obj_drc->str_bit_handler.bitstream_unidrc_interface = (UWORD8 *)persistent_ptr; - persistent_ptr = persistent_ptr + MAX_BS_BUF_SIZE; + persistent_ptr += MAX_BS_BUF_SIZE; p_obj_drc->str_payload.pstr_peak_limiter = (ia_drc_peak_limiter_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_peak_limiter_struct); + persistent_ptr += sizeof(ia_drc_peak_limiter_struct); - p_obj_drc->str_payload.pstr_peak_limiter->buffer = - (FLOAT32 *)((SIZE_T)p_obj_drc->str_payload.pstr_peak_limiter + - sizeof(ia_drc_peak_limiter_struct)); - persistent_ptr = persistent_ptr + PEAK_LIM_BUF_SIZE; + p_obj_drc->str_payload.pstr_peak_limiter->buffer = (FLOAT32 *)persistent_ptr; + persistent_ptr += PEAK_LIM_BUF_SIZE; p_obj_drc->str_payload.pstr_qmf_filter = (ia_drc_qmf_filt_struct *)persistent_ptr; - persistent_ptr = persistent_ptr + sizeof(ia_drc_qmf_filt_struct); + persistent_ptr += sizeof(ia_drc_qmf_filt_struct); p_obj_drc->str_payload.pstr_qmf_filter->ana_buff = (FLOAT64 *)persistent_ptr; - persistent_ptr = persistent_ptr + ANALY_BUF_SIZE; + persistent_ptr += ANALY_BUF_SIZE; p_obj_drc->str_payload.pstr_qmf_filter->syn_buff = (FLOAT64 *)persistent_ptr; - persistent_ptr = persistent_ptr + SYNTH_BUF_SIZE; + persistent_ptr += SYNTH_BUF_SIZE; + persistent_size_consumed = - (UWORD32)persistent_ptr - (UWORD32)p_obj_drc->p_state->persistent_ptr; - if (p_obj_drc->p_mem_info[IA_MEMTYPE_PERSIST].ui_size < + (UWORD64)(persistent_ptr - (pUWORD8)p_obj_drc->p_state->persistent_ptr); + + if ((UWORD64)p_obj_drc->p_mem_info[IA_MEMTYPE_PERSIST].ui_size < persistent_size_consumed) return IA_FATAL_ERROR; |