diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c index 9d80ea9440..8b9c2eecac 100644 --- a/libavcodec/alsdec.c +++ b/libavcodec/alsdec.c @@ -356,12 +356,15 @@ static av_cold int read_specific_config(ALSDecContext *ctx) return AVERROR(ENOMEM); for (i = 0; i < avctx->channels; i++) { - sconf->chan_pos[i] = get_bits(&gb, chan_pos_bits); - if (sconf->chan_pos[i] >= avctx->channels) { + int idx; + + idx = get_bits(&gb, chan_pos_bits); + if (idx >= avctx->channels) { av_log(avctx, AV_LOG_WARNING, "Invalid channel reordering.\n"); sconf->chan_sort = 0; break; } + sconf->chan_pos[idx] = i; } align_get_bits(&gb);