[FFmpeg-cvslog] lavf/flacdec: Return maximum score if the streaminfo header is valid.

Carl Eugen Hoyos git at videolan.org
Thu Mar 30 02:42:23 EEST 2017


ffmpeg | branch: release/3.2 | Carl Eugen Hoyos <cehoyos at ag.or.at> | Thu Mar  2 09:29:10 2017 +0100| [582c3d514a7b40d38fff610da2110ac63dfe2e10] | committer: Carl Eugen Hoyos

lavf/flacdec: Return maximum score if the streaminfo header is valid.

Fixes ticket #6208.

(cherry picked from commit 3733039610d76231e404ebf089f0ff2b9d8e5490)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=582c3d514a7b40d38fff610da2110ac63dfe2e10
---

 libavformat/flacdec.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c
index 66baba5..fee46fc 100644
--- a/libavformat/flacdec.c
+++ b/libavformat/flacdec.c
@@ -233,7 +233,14 @@ static int flac_probe(AVProbeData *p)
         return raw_flac_probe(p);
     if (p->buf_size < 4 || memcmp(p->buf, "fLaC", 4))
         return 0;
-    return AVPROBE_SCORE_EXTENSION;
+    if (   p->buf[4] & 0x7f != FLAC_METADATA_TYPE_STREAMINFO
+        || AV_RB24(p->buf + 5) != FLAC_STREAMINFO_SIZE
+        || AV_RB16(p->buf + 8) < 16
+        || AV_RB16(p->buf + 8) > AV_RB16(p->buf + 10)
+        || !(AV_RB24(p->buf + 18) >> 4)
+        || AV_RB24(p->buf + 18) >> 4 > 655350)
+        return AVPROBE_SCORE_EXTENSION;
+    return AVPROBE_SCORE_MAX;
 }
 
 static av_unused int64_t flac_read_timestamp(AVFormatContext *s, int stream_index,



More information about the ffmpeg-cvslog mailing list