mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
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:
parent
e4c01d408a
commit
ddbb7c9be2
@ -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…
Reference in New Issue
Block a user