Commit ddbb7c9b authored by Reimar Döffinger's avatar Reimar Döffinger

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
parent e4c01d40
...@@ -42,13 +42,24 @@ typedef struct MaxisXADemuxContext { ...@@ -42,13 +42,24 @@ typedef struct MaxisXADemuxContext {
static int xa_probe(AVProbeData *p) static int xa_probe(AVProbeData *p)
{ {
int channels, srate, bits_per_sample;
if (p->buf_size < 24)
return 0;
switch(AV_RL32(p->buf)) { switch(AV_RL32(p->buf)) {
case XA00_TAG: case XA00_TAG:
case XAI0_TAG: case XAI0_TAG:
case XAJ0_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, static int xa_read_header(AVFormatContext *s,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment