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.

Originally committed as revision 19842 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Reimar Döffinger 2009-09-14 19:58:51 +00:00
parent e4c01d408a
commit ddbb7c9be2

View File

@ -42,13 +42,24 @@ typedef struct MaxisXADemuxContext {
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,