flacdec: Avoid trying to read 33 bits. This occurs when the source
authorJustin Ruggles <justin.ruggles@gmail.com>
Tue, 3 Mar 2009 04:45:45 +0000 (04:45 +0000)
committerJustin Ruggles <justin.ruggles@gmail.com>
Tue, 3 Mar 2009 04:45:45 +0000 (04:45 +0000)
is 32 bits-per-sample and channel decorrelation is used.  Such files
are valid, but not supported currently.

Originally committed as revision 17743 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/flacdec.c

index 04cb54d..8c73434 100644 (file)
@@ -37,6 +37,7 @@
 
 #include "libavutil/crc.h"
 #include "avcodec.h"
+#include "internal.h"
 #include "bitstream.h"
 #include "golomb.h"
 #include "flac.h"
@@ -429,6 +430,10 @@ static inline int decode_subframe(FLACContext *s, int channel)
         if (s->decorrelation == LEFT_SIDE || s->decorrelation == MID_SIDE)
             s->curr_bps++;
     }
+    if (s->curr_bps > 32) {
+        ff_log_missing_feature(s->avctx, "decorrelated bit depth > 32", 0);
+        return -1;
+    }
 
     if (get_bits1(&s->gb)) {
         av_log(s->avctx, AV_LOG_ERROR, "invalid subframe padding\n");