flacdec: Add a check for small buffer size. This ensures reading as
authorJustin Ruggles <justin.ruggles@gmail.com>
Wed, 4 Mar 2009 23:55:10 +0000 (23:55 +0000)
committerJustin Ruggles <justin.ruggles@gmail.com>
Wed, 4 Mar 2009 23:55:10 +0000 (23:55 +0000)
much of the frame header as possible without excluding the smallest
possible FLAC frame.  It also fixes a false positive warning message
that was being emitted at the end of decoding.

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

libavcodec/flacdec.c

index 61062b2..ee845de 100644 (file)
@@ -639,6 +639,11 @@ static int flac_decode_frame(AVCodecContext *avctx,
 
     init_get_bits(&s->gb, buf, buf_size*8);
 
+    /* check that there is at least the smallest decodable amount of data.
+       this amount corresponds to the smallest valid FLAC frame possible. */
+    if (buf_size < 24)
+        goto end;
+
     /* check for inline header */
     if (show_bits_long(&s->gb, 32) == MKBETAG('f','L','a','C')) {
         if (metadata_parse(s)) {