On Sun, Aug 31, 2014 at 09:41:49AM +0200, Reimar Döffinger wrote:
> On 30.08.2014, at 15:38, wm4 <nfx...@googlemail.com> wrote:
> > +    // The packet-size is stored as part of the packet.
> > +    if ((ret = avio_read(s->pb, tmp, 3)) < 0)
> > +        return ret;
> > +
> > +    len = AV_RB16(tmp + 1);
> > +
> > +    if ((ret = av_new_packet(pkt, len + 3)) < 0)
> > +        return ret;
> > +
> > +    memcpy(pkt->data, tmp, 3);
> > +
> > +    if ((ret = avio_read(s->pb, pkt->data + 3, len)) < 0) {
> > +        av_free_packet(pkt);
> > +        return ret;
> > +    }
> 
> I think this will not handle short reads correctly, retuning uninitialised 
> data.

> My suggestion would be to read the length, then seek back (buffering should 
> ensure this is no issue even if we read from stdin) and then use the 
> functions to read the full packet with all the proper error handling.

note, for guranteed seekback on non seekable input
ffio_ensure_seekback() is needed


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

Complexity theory is the science of finding the exact solution to an
approximation. Benchmarking OTOH is finding an approximation of the exact

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to