Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2017-03-02 11:29:10 +0300
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2017-03-02 11:29:10 +0300
commit3733039610d76231e404ebf089f0ff2b9d8e5490 (patch)
tree7a38261ca2b8a26821a531b37eee2030681e2d3b /libavformat/flacdec.c
parent4bed06637729ab000b79250c67d53078300e37c4 (diff)
lavf/flacdec: Return maximum score if the streaminfo header is valid.
Diffstat (limited to 'libavformat/flacdec.c')
-rw-r--r--libavformat/flacdec.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c
index 66baba5922..fee46fcfe6 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,