[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