[FFmpeg-cvslog] oggdec: fix demuxing chained audio streams

Michael Niedermayer michaelni at gmx.at
Mon Apr 11 11:56:27 CEST 2011


On Mon, Apr 11, 2011 at 11:41:16AM +0200, Clément Bœsch wrote:
> On Mon, Apr 11, 2011 at 07:48:48AM +0200, Reimar Döffinger wrote:
> > 
> > 
> > On 11 Apr 2011, at 04:12, git at videolan.org (Clément Bœsch) wrote:
> > 
> > > ffmpeg | branch: master | Clément Bœsch <ubitux at gmail.com> | Tue Apr  5 00:29:01 2011 +0200| [47dec30edb8565b7e0e8716dc6d0dc36d5b7bc40] | committer: Luca Barbato
> > > 
> > > oggdec: fix demuxing chained audio streams
> > > 
> > > Chained ogg served by icecast and mpd should demux
> > > properly now.
> > > 
> > > Fixes issue2337
> > > 
> > > Signed-off-by: Luca Barbato <lu_zero at gentoo.org>
> > > 
> > >> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=47dec30edb8565b7e0e8716dc6d0dc36d5b7bc40
> > > ---
> > > 
> > > libavformat/oggdec.c |   16 ++++++++++++++++
> > > libavformat/oggdec.h |    1 +
> > > 2 files changed, 17 insertions(+), 0 deletions(-)
> > > 
> > > diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
> > > index cd866d4..5cf4faa 100644
> > > --- a/libavformat/oggdec.c
> > > +++ b/libavformat/oggdec.c
> > > @@ -164,6 +164,7 @@ ogg_new_stream (AVFormatContext * s, uint32_t serial)
> > >     os->bufsize = DECODER_BUFFER_SIZE;
> > >     os->buf = av_malloc(os->bufsize);
> > >     os->header = -1;
> > > +    os->page_begin = 1;
> > > 
> > >     st = av_new_stream (s, idx);
> > >     if (!st)
> > > @@ -241,12 +242,27 @@ ogg_read_page (AVFormatContext * s, int *str)
> > > 
> > >     idx = ogg_find_stream (ogg, serial);
> > >     if (idx < 0){
> > > +        for (i = 0; i < ogg->nstreams; i++) {
> > > +            if (!ogg->streams[i].page_begin) {
> > > +                int n;
> > > +
> > > +                for (n = 0; n < ogg->nstreams; n++) {
> > > +                    av_free(ogg->streams[n].buf);
> > > +                    av_free(ogg->streams[n].private);
> > 
> > Shouldn't this use av_freep?
> 
> Should not be necessary, the whole streams array will be reallocated with

the idea about av_freep() is thats its safer. Iam sure we have many
places where its not strictly needed

(safer in the sense that a few uneeded =NULL are better than one missed
one that leads to an exploit)

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

The worst form of inequality is to try to make unequal things equal.
-- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-cvslog/attachments/20110411/525b52e0/attachment.asc>


More information about the ffmpeg-cvslog mailing list