diff flacdec.c @ 9101:03a05f3afbae libavcodec

flacdec: Avoid trying to read 33 bits. This occurs when the source is 32 bits-per-sample and channel decorrelation is used. Such files are valid, but not supported currently.
author jbr
date Tue, 03 Mar 2009 04:45:45 +0000
parents 99ac7c42461f
children 9ae9d486669a
line wrap: on
line diff
--- a/flacdec.c	Tue Mar 03 02:53:11 2009 +0000
+++ b/flacdec.c	Tue Mar 03 04:45:45 2009 +0000
@@ -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 @@
         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");