[libav-commits] adpcm-thp: fix invalid array indexing

Mans Rullgard git at libav.org
Tue May 1 01:23:17 CEST 2012


Module: libav
Branch: master
Commit: a812ed003f75ad8f90035ab3b88369ee7f3e1bd1

Author:    Mans Rullgard <mans at mansr.com>
Committer: Mans Rullgard <mans at mansr.com>
Date:      Sun Apr 29 01:17:37 2012 +0100

adpcm-thp: fix invalid array indexing

Indexing outside array limits is invalid and breaks with gcc 4.8.

Signed-off-by: Mans Rullgard <mans at mansr.com>

---

 libavcodec/adpcm.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c
index 41d0d98..8170e7f 100644
--- a/libavcodec/adpcm.c
+++ b/libavcodec/adpcm.c
@@ -1209,12 +1209,14 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data,
         int prev[2][2];
         int ch;
 
-        for (i = 0; i < 32; i++)
-            table[0][i] = sign_extend(bytestream2_get_be16u(&gb), 16);
+        for (i = 0; i < 2; i++)
+            for (n = 0; n < 16; n++)
+                table[i][n] = sign_extend(bytestream2_get_be16u(&gb), 16);
 
         /* Initialize the previous sample.  */
-        for (i = 0; i < 4; i++)
-            prev[0][i] = sign_extend(bytestream2_get_be16u(&gb), 16);
+        for (i = 0; i < 2; i++)
+            for (n = 0; n < 2; n++)
+                prev[i][n] = sign_extend(bytestream2_get_be16u(&gb), 16);
 
         for (ch = 0; ch <= st; ch++) {
             samples = (short *)c->frame.data[0] + ch;



More information about the libav-commits mailing list