]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Check whether extra bits block has enough data.
authorkostya <kostya@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 3 May 2009 05:42:51 +0000 (05:42 +0000)
committerkostya <kostya@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 3 May 2009 05:42:51 +0000 (05:42 +0000)
Patch by Laurent Aimar "f\145nr\151r >at< vide\157lan <dot> o\162g"

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18732 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/wavpack.c

index c8ab858439577e28195e5cc81b0c3082adf7d989..544ed9649e6fe5f36d713058a0861605fb74e7e6 100644 (file)
@@ -795,6 +795,14 @@ static int wavpack_decode_frame(AVCodecContext *avctx,
         av_log(avctx, AV_LOG_ERROR, "Packed samples not found\n");
         return -1;
     }
+    if(s->got_extra_bits){
+        const int size = s->gb_extra_bits.size_in_bits - get_bits_count(&s->gb_extra_bits);
+        const int wanted = s->samples * s->extra_bits << s->stereo_in;
+        if(size < wanted){
+            av_log(avctx, AV_LOG_ERROR, "Too small EXTRABITS\n");
+            s->got_extra_bits = 0;
+        }
+    }
 
     if(s->stereo_in){
         if(bpp == 2)