[FFmpeg-devel] [Patch] Fix crash in avienc when muxing zero streams
Wed Jan 13 14:08:44 CET 2010
On Wed, Jan 13, 2010 at 10:14:47AM +0100, Tomas H?rdin wrote:
> On Tue, 2010-01-12 at 23:40 +0100, Michael Niedermayer wrote:
> > On Tue, Jan 12, 2010 at 04:26:03PM +0100, Tomas H?rdin wrote:
> > > Good evening
> > >
> > > I've noticed a bug in libavformat/avienc.c - avi_write_header()
> > > segfaults when the number of streams is zero. The culprit is line 363,
> > > which is missing a NULL pointer check on s->streams. Zero streams
> > > should be semantically equal to CODEC_FLAG_BITEXACT not being set, so I
> > > simply prepended "!s->streams ||". Some might prefer nb_streams == 0
> > > though.
> > >
> > > There are more examples of this behaviour. Try searching for streams
> > > and you'll find more (soxenc.c for instance). That's probably for
> > > another day though.
> > >
> > > Attached patch passes the tests.
> > what use is a avi file with no streams?
> > none? then the check belongs in the common code to prevent this case
> > from ever reaching any muxer
> That would be an easier solution - one which I initially considered.
> However, output without streams is not useless - there's plenty of
> metadata around. Also, if URIs to external essences are not considered
> part of a stream, then an MXF or MOV file containing only such essence
> would have no streams (if such support is added in the future).
> Therefore I opted for the solution which retains maximum functionality
> of lavf.
> However, I also made another patch which adds a check in
> av_write_header(). It also passes the tests. See utils.diff.
> utils.c | 5 +++++
> 1 file changed, 5 insertions(+)
> 919f47f16397707a1c9088818d631fbc72c98e25 utils.diff
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Its not that you shouldnt use gotos but rather that you should write
readable code and code with gotos often but not always is less readable
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: Digital signature
More information about the ffmpeg-devel