diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-11-10 16:04:33 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-11-10 16:06:16 +0100 |
commit | 2fbc759d08cae97f9361e464a685a149c9d12c72 (patch) | |
tree | a4e210c2afe145eae4e21cb60c3e5738fcb934bb /libavformat | |
parent | 023953e96425a5fdff6b3904332ec621bb676b34 (diff) | |
download | ffmpeg-2fbc759d08cae97f9361e464a685a149c9d12c72.tar.gz |
avformat/diracdec: check 2 chunks in probe
Fixes probetest failure
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/diracdec.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libavformat/diracdec.c b/libavformat/diracdec.c index 6636ead30d..e061ba5e8e 100644 --- a/libavformat/diracdec.c +++ b/libavformat/diracdec.c @@ -25,10 +25,19 @@ static int dirac_probe(AVProbeData *p) { - if (AV_RL32(p->buf) == MKTAG('B', 'B', 'C', 'D')) - return AVPROBE_SCORE_MAX; - else + unsigned size; + if (AV_RL32(p->buf) != MKTAG('B', 'B', 'C', 'D')) return 0; + + size = AV_RB32(p->buf+5); + if (size < 13) + return 0; + if (size + 13LL > p->buf_size) + return AVPROBE_SCORE_MAX / 4; + if (AV_RL32(p->buf + size) != MKTAG('B', 'B', 'C', 'D')) + return 0; + + return AVPROBE_SCORE_MAX; } FF_DEF_RAWVIDEO_DEMUXER(dirac, "raw Dirac", dirac_probe, NULL, AV_CODEC_ID_DIRAC) |