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;
     }
   }