Fixed invalid writes in wavpack decoder on corrupted bitstreams.
authorLaurent Aimar <fenrir@videolan.org>
Wed, 7 Sep 2011 20:17:39 +0000 (22:17 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 21 Sep 2011 15:57:33 +0000 (17:57 +0200)
Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit 0aedab03405849962b469277afe047aa2c61a87f)

libavcodec/wavpack.c

index 61a75fd..1e6d857 100644 (file)
@@ -1141,7 +1141,7 @@ static int wavpack_decode_block(AVCodecContext *avctx, int block_no,
             int16_t *dst = (int16_t*)samples + 1;
             int16_t *src = (int16_t*)samples;
             int cnt = samplecount;
-            while(cnt--){
+            while(cnt-- > 0){
                 *dst = *src;
                 src += channel_stride;
                 dst += channel_stride;
@@ -1150,7 +1150,7 @@ static int wavpack_decode_block(AVCodecContext *avctx, int block_no,
             int32_t *dst = (int32_t*)samples + 1;
             int32_t *src = (int32_t*)samples;
             int cnt = samplecount;
-            while(cnt--){
+            while(cnt-- > 0){
                 *dst = *src;
                 src += channel_stride;
                 dst += channel_stride;
@@ -1159,7 +1159,7 @@ static int wavpack_decode_block(AVCodecContext *avctx, int block_no,
             float *dst = (float*)samples + 1;
             float *src = (float*)samples;
             int cnt = samplecount;
-            while(cnt--){
+            while(cnt-- > 0){
                 *dst = *src;
                 src += channel_stride;
                 dst += channel_stride;