Browse Source

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
tags/v0.6
Reimar Döffinger 15 years ago
parent
commit
ddbb7c9be2
1 changed files with 13 additions and 2 deletions
  1. +13
    -2
      libavformat/xa.c

+ 13
- 2
libavformat/xa.c 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,


Loading…
Cancel
Save