adpcm: Avoid reading out of bounds in the IMA QT trellis encoder
authorMartin Storsjö <martin@martin.st>
Thu, 5 Jun 2014 08:48:53 +0000 (11:48 +0300)
committerMartin Storsjö <martin@martin.st>
Fri, 6 Jun 2014 16:23:54 +0000 (19:23 +0300)
This was broken in 095be4fb - samples+ch (for the previous
non-planar case) equals &samples_p[ch][0]. The confusion
probably stemmed from the IMA WAV case where it originally
was &samples[avctx->channels + ch], which was correctly
changed into &samples_p[ch][1].

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
libavcodec/adpcmenc.c

index fb3ce0d..2cf8d6f 100644 (file)
@@ -549,7 +549,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
             put_bits(&pb, 7,  status->step_index);
             if (avctx->trellis > 0) {
                 uint8_t buf[64];
-                adpcm_compress_trellis(avctx, &samples_p[ch][1], buf, status,
+                adpcm_compress_trellis(avctx, &samples_p[ch][0], buf, status,
                                        64, 1);
                 for (i = 0; i < 64; i++)
                     put_bits(&pb, 4, buf[i ^ 1]);