[FFmpeg-soc] [soc]: r2578 - mlp/mlpdec.c

Michael Niedermayer michaelni at gmx.at
Thu Jun 26 20:48:56 CEST 2008


On Thu, Jun 26, 2008 at 07:26:20PM +0100, Ramiro Polla wrote:
> Hello,
> 
> ramiro wrote:
> > Author: ramiro
> > Date: Thu Jun 26 19:33:28 2008
> > New Revision: 2578
> > 
> > Log:
> > More checks to see if there is enough data.
> > 
> > Modified:
> >    mlp/mlpdec.c
> > 
> > Modified: mlp/mlpdec.c
> > ==============================================================================
> > --- mlp/mlpdec.c	(original)
> > +++ mlp/mlpdec.c	Thu Jun 26 19:33:28 2008
> > @@ -1009,6 +1009,9 @@ static int read_access_unit(AVCodecConte
> >      for (substr = 0; substr < m->num_substreams; substr++) {
> >          int extraword_present, checkdata_present, end;
> >  
> > +        if (bytes_left < 2)
> > +            return -1;
> > +
> >          extraword_present = get_bits1(&gb);
> >          skip_bits1(&gb);
> >          checkdata_present = get_bits1(&gb);
> > @@ -1022,6 +1025,8 @@ static int read_access_unit(AVCodecConte
> >          bytes_left -= 2;
> >  
> >          if (extraword_present) {
> > +            if (bytes_left < 2)
> > +                return -1;
> >              skip_bits(&gb, 16);
> >              parity_bits ^= *buf++;
> >              parity_bits ^= *buf++;
> 
> This seems like a long and painful road... While we're still reading 
> headers with easily calculated size, this isn't too hard, and there 
> won't be much overhead in the checks. But on more complicated headers 
> and specially the VLC values it's not easy to see if we still have 
> enough data.
> 
> Lots of other codecs I've looked at seem to just trust init_get_bits() 
> with the remaining bytes.
> 
> What's the best practice here? Should the header checksum && coded 
> lengths be enough to validate the input size?

All _writes_ must be checked, the reads are not critical.
also dont forget FF_INPUT_BUFFER_PADDING_SIZE

about other codecs
mpeg & h26* are designed so 23 zero bits can never occur in a valid bitstream
that way the 64 zero bit at the end are guranteed to trigger some kind of
error.

I definitly do not want the code to be salted with input buffer checks in
every second line!

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Opposition brings concord. Out of discord comes the fairest harmony.
-- Heraclitus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-soc/attachments/20080626/ff10b3b1/attachment.pgp>


More information about the FFmpeg-soc mailing list