Fix for array out of bound in impd_drc_parse_coeff func
Variable num_gain_max_values was used as index in
impd_init_table function without checked
for bounds. Added check to prevent out of bound array
access.
Bug:141524702
Test: poc in bug
Change-Id: Ia902153ef614db6dbd002572cdbdb62421580588
diff --git a/decoder/drc_src/impd_drc_static_payload.c b/decoder/drc_src/impd_drc_static_payload.c
index 95f5aeb..9ba1ad3 100644
--- a/decoder/drc_src/impd_drc_static_payload.c
+++ b/decoder/drc_src/impd_drc_static_payload.c
@@ -1695,6 +1695,10 @@
ia_drc_params_struct->drc_frame_size /
str_p_loc_drc_coefficients_uni_drc->gain_set_params[i]
.time_delt_min_val;
+ if (str_p_loc_drc_coefficients_uni_drc->gain_set_params[i]
+ .num_gain_max_values >
+ (N_DELTA_TIME_CODE_TABLE_ENTRIES_MAX / 2 - 1))
+ return (UNEXPECTED_ERROR);
err = impd_init_tbls(
str_p_loc_drc_coefficients_uni_drc->gain_set_params[i]
.num_gain_max_values,
@@ -1871,6 +1875,11 @@
ia_drc_params_struct->drc_frame_size /
str_p_loc_drc_coefficients_uni_drc->gain_set_params[i]
.time_delt_min_val;
+ if (str_p_loc_drc_coefficients_uni_drc->gain_set_params[i]
+ .num_gain_max_values >
+ (N_DELTA_TIME_CODE_TABLE_ENTRIES_MAX / 2 - 1))
+ return (UNEXPECTED_ERROR);
+
err = impd_init_tbls(
str_p_loc_drc_coefficients_uni_drc->gain_set_params[i]
.num_gain_max_values,