aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Essick <essick@google.com>2020-09-30 04:01:22 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-09-30 04:01:22 +0000
commit61a4d7ee29bc77cb5cea482abd2f462f0ae6b910 (patch)
tree098025a12e19d8069fdb22081784485d5524c9c2
parent85d0e7bd869fb90138400a1fbb0e1cb7957aa36b (diff)
parente46656b338a0b0d95b64fe971ac8f77929e02ec2 (diff)
downloadlibxaac-61a4d7ee29bc77cb5cea482abd2f462f0ae6b910.tar.gz
Merge "Fix for array out of bound access in impd_drc_get_gain" am: 7d0fd974c9 am: e6d24ebe23 am: e626d6d509 am: d9e5ecdcdb am: e46656b338
Original change: https://android-review.googlesource.com/c/platform/external/libxaac/+/1425115 Change-Id: I5ff7c48691f294ca549072c50ea7ae66657725f0
-rw-r--r--decoder/drc_src/impd_drc_static_payload.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/decoder/drc_src/impd_drc_static_payload.c b/decoder/drc_src/impd_drc_static_payload.c
index 6eb5a23..e389c24 100644
--- a/decoder/drc_src/impd_drc_static_payload.c
+++ b/decoder/drc_src/impd_drc_static_payload.c
@@ -1414,17 +1414,21 @@ impd_dec_gain_modifiers(ia_bit_buf_struct* it_bit_buff, WORD32 version,
impd_read_bits_buf(it_bit_buff, 1);
if (it_bit_buff->error) return it_bit_buff->error;
if (pstr_gain_modifiers->target_characteristic_left_present[b]) {
- pstr_gain_modifiers->target_characteristic_left_index[b] =
- impd_read_bits_buf(it_bit_buff, 4);
+ WORD32 tmp_index = impd_read_bits_buf(it_bit_buff, 4);
if (it_bit_buff->error) return it_bit_buff->error;
+ if (tmp_index >= SPLIT_CHARACTERISTIC_COUNT_MAX)
+ return (UNEXPECTED_ERROR);
+ pstr_gain_modifiers->target_characteristic_left_index[b] = tmp_index;
}
pstr_gain_modifiers->target_characteristic_right_present[b] =
impd_read_bits_buf(it_bit_buff, 1);
if (it_bit_buff->error) return it_bit_buff->error;
if (pstr_gain_modifiers->target_characteristic_right_present[b]) {
- pstr_gain_modifiers->target_characteristic_right_index[b] =
- impd_read_bits_buf(it_bit_buff, 4);
+ WORD32 tmp_index = impd_read_bits_buf(it_bit_buff, 4);
if (it_bit_buff->error) return it_bit_buff->error;
+ if (tmp_index >= SPLIT_CHARACTERISTIC_COUNT_MAX)
+ return (UNEXPECTED_ERROR);
+ pstr_gain_modifiers->target_characteristic_right_index[b] = tmp_index;
}
pstr_gain_modifiers->gain_scaling_flag[b] =
impd_read_bits_buf(it_bit_buff, 1);