summaryrefslogtreecommitdiff
path: root/libavcodec/ac3dec.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2018-03-30 10:14:48 +0200
committerPaul B Mahol <onemda@gmail.com>2018-03-30 10:14:48 +0200
commit0b86ea03d8415b5a3a6b07f3012a8097bca26ea5 (patch)
treed4d3af3dc2d696066a24b0c9ec9880926b8f2d89 /libavcodec/ac3dec.c
parent91bb871376730a2394ed0ae1a3fd4295977002d3 (diff)
avcodec/ac3: fix out of array access introduced previously
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavcodec/ac3dec.c')
-rw-r--r--libavcodec/ac3dec.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
index ac5c6d636a..b14d2e74ac 100644
--- a/libavcodec/ac3dec.c
+++ b/libavcodec/ac3dec.c
@@ -1488,7 +1488,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data,
int blk, ch, err, offset, ret;
int got_independent_frame = 0;
const uint8_t *channel_map;
- uint8_t extended_channel_map[AC3_MAX_CHANNELS * 2];
+ uint8_t extended_channel_map[EAC3_MAX_CHANNELS];
const SHORTFLOAT *output[AC3_MAX_CHANNELS];
enum AVMatrixEncoding matrix_encoding;
AVDownmixInfo *downmix_info;
@@ -1685,7 +1685,7 @@ dependent_frame:
avctx->bit_rate = s->bit_rate + s->prev_bit_rate;
}
- for (ch = 0; ch < 16; ch++)
+ for (ch = 0; ch < EAC3_MAX_CHANNELS; ch++)
extended_channel_map[ch] = ch;
if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) {
@@ -1698,7 +1698,7 @@ dependent_frame:
channel_layout = ich_layout;
for (ch = 0; ch < 16; ch++) {
- if (s->channel_map & (1 << (15 - ch))) {
+ if (s->channel_map & (1 << (EAC3_MAX_CHANNELS - ch - 1))) {
channel_layout |= custom_channel_map_locations[ch][1];
}
}
@@ -1706,8 +1706,8 @@ dependent_frame:
avctx->channel_layout = channel_layout;
avctx->channels = av_get_channel_layout_nb_channels(channel_layout);
- for (ch = 0; ch < 16; ch++) {
- if (s->channel_map & (1 << (15 - ch))) {
+ for (ch = 0; ch < EAC3_MAX_CHANNELS; ch++) {
+ if (s->channel_map & (1 << (EAC3_MAX_CHANNELS - ch - 1))) {
if (custom_channel_map_locations[ch][0]) {
int index = av_get_channel_layout_channel_index(channel_layout,
custom_channel_map_locations[ch][1]);