Mercurial > libavformat.hg
changeset 5180:a026efc0ca86 libavformat
Add more sanity checks for header elements, rejecting files with clearly
invalid values that wouldn't play right anyway and reduce probe score to MAX/2.
Passes probetest v2.
author | reimar |
---|---|
date | Mon, 14 Sep 2009 19:58:51 +0000 |
parents | cd0985411145 |
children | c900e8690782 |
files | xa.c |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/xa.c Mon Sep 14 19:06:36 2009 +0000 +++ b/xa.c Mon Sep 14 19:58:51 2009 +0000 @@ -42,13 +42,24 @@ static int xa_probe(AVProbeData *p) { + int channels, srate, bits_per_sample; + if (p->buf_size < 24) + return 0; switch(AV_RL32(p->buf)) { case XA00_TAG: case XAI0_TAG: case XAJ0_TAG: - return AVPROBE_SCORE_MAX; + break; + default: + return 0; } - return 0; + channels = AV_RL16(p->buf + 10); + srate = AV_RL32(p->buf + 12); + bits_per_sample = AV_RL16(p->buf + 22); + if (!channels || channels > 8 || !srate || srate > 192000 || + bits_per_sample < 4 || bits_per_sample > 32) + return 0; + return AVPROBE_SCORE_MAX/2; } static int xa_read_header(AVFormatContext *s,