Check validity of the frame sync code in ff_flac_decode_frame_header().
authorMichael Chinen <mchinen@gmail.com>
Tue, 7 Dec 2010 13:42:52 +0000 (13:42 +0000)
committerJustin Ruggles <justin.ruggles@gmail.com>
Tue, 7 Dec 2010 13:42:52 +0000 (13:42 +0000)
Patch by Michael Chinen [mchinen at gmail]

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

libavcodec/flac.c

index f6b65ce..2e3197f 100644 (file)
@@ -38,7 +38,13 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
     int bs_code, sr_code, bps_code;
 
     /* frame sync code */
-    skip_bits(gb, 16);
+    if ((get_bits(gb, 15) & 0x7FFF) != 0x7FFC) {
+        av_log(avctx, AV_LOG_ERROR, "invalid sync code\n");
+        return -1;
+    }
+
+    /* variable block size stream code */
+    skip_bits1(gb);
 
     /* block size and sample rate codes */
     bs_code = get_bits(gb, 4);