dcaenc: fix out of array read
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 11 May 2012 01:33:59 +0000 (03:33 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 11 May 2012 01:33:59 +0000 (03:33 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/dcaenc.c

index d6efd25..f0b6f81 100644 (file)
@@ -503,13 +503,13 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
     samples = (const int16_t *)frame->data[0];
     for (i = 0; i < PCM_SAMPLES; i ++) { /* i is the decimated sample number */
         for (channel = 0; channel < c->prim_channels + 1; channel++) {
-            /* Get 32 PCM samples */
-            for (k = 0; k < 32; k++) { /* k is the sample number in a 32-sample block */
-                c->pcm[k] = samples[avctx->channels * (32 * i + k) + channel] << 16;
-            }
-            /* Put subband samples into the proper place */
             real_channel = c->channel_order_tab[channel];
             if (real_channel >= 0) {
+                /* Get 32 PCM samples */
+                for (k = 0; k < 32; k++) { /* k is the sample number in a 32-sample block */
+                    c->pcm[k] = samples[avctx->channels * (32 * i + k) + channel] << 16;
+                }
+                /* Put subband samples into the proper place */
                 qmf_decompose(c, c->pcm, &c->subband[i][real_channel][0], real_channel);
             }
         }