Merge "Fix for array out of bound in decoder/drc_src/impd_drc_eq.c" into rvc-dev am: 7862de4bd2 am: 439c0bdf9e
Change-Id: I269990ef1bda4721c6b0f7f95f1fb790d192ea2c
diff --git a/decoder/drc_src/impd_drc_dynamic_payload.c b/decoder/drc_src/impd_drc_dynamic_payload.c
index f96b16e..a8a15a9 100644
--- a/decoder/drc_src/impd_drc_dynamic_payload.c
+++ b/decoder/drc_src/impd_drc_dynamic_payload.c
@@ -1223,9 +1223,10 @@
if (it_bit_buff->error) return it_bit_buff->error;
if (str_eq_instructions->td_filter_cascade_present) {
- impd_parser_td_filter_cascade(
+ WORD32 err = impd_parser_td_filter_cascade(
it_bit_buff, str_eq_instructions,
&(str_eq_instructions->str_td_filter_cascade));
+ if (err) return err;
}
str_eq_instructions->subband_gains_present =
@@ -1234,9 +1235,10 @@
if (str_eq_instructions->subband_gains_present) {
for (i = 0; i < str_eq_instructions->eq_ch_group_count; i++) {
- str_eq_instructions->subband_gains_index[i] =
- impd_read_bits_buf(it_bit_buff, 6);
+ WORD32 tmp = impd_read_bits_buf(it_bit_buff, 6);
if (it_bit_buff->error) return it_bit_buff->error;
+ if (tmp >= UNIQUE_SUBBAND_GAIN_COUNT_MAX) return UNEXPECTED_ERROR;
+ str_eq_instructions->subband_gains_index[i] = tmp;
}
}