[FFmpeg-devel] [PATCH v10 2/2] avformat: add demuxer for Pro Pinball Series' Soundbanks
Zane van Iperen
zane at zanevaniperen.com
Sat Apr 25 16:10:53 EEST 2020
On Sat, 25 Apr 2020 13:15:25 +0200
"Michael Niedermayer" <michael at niedermayer.cc> wrote:
> > +static int pp_bnk_probe(const AVProbeData *p)
> > +{
> > + uint32_t sample_rate = AV_RL32(p->buf + 4);
> > + uint32_t track_count = AV_RL32(p->buf + 12);
> > + uint32_t flags = AV_RL32(p->buf + 16);
> > +
> > + if (track_count == 0 || sample_rate == 0)
> > + return 0;
>
> the header code checks these also for INT_MAX
>
>
See below I check both track_count and sample_rate for sane upper
limits. Is it worth adding an INT_MAX check too?
/* These limits are based on analysing the game files. */
if (track_count > 113)
return 10;
if ((sample_rate != 5512) && (sample_rate != 11025) &&
(sample_rate != 22050) && (sample_rate != 44100))
return 10;
> > +
> > + /* Sometimes we have the first track header, so check that
> > too. */
> > + if (p->buf_size >= 32 && AV_RL32(p->buf + 28) != sample_rate)
> > + return 0;
>
> are files with 32 or less bytes valid ?
> If not its probably better to not recognize such small pieces
>
A file needs at least one track and the first track header is
immediately after the file header, so I guess the minimum valid size
would be 40 (assuming an empty track).
Would removing the "p->buf_size >= 32" check be alright?
Zane
More information about the ffmpeg-devel
mailing list