[FFmpeg-devel] [Patch] Fix crash in avienc when muxing zero streams

Tomas Härdin tomas.hardin
Wed Jan 13 10:14:47 CET 2010

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[0]. Zero streams
> > should be semantically equal to CODEC_FLAG_BITEXACT not being set, so I
> > simply prepended "!s->streams[0] ||". Some might prefer nb_streams == 0
> > though.
> > 
> > There are more examples of this behaviour. Try searching for streams[0]
> > 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.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: utils.diff
Type: text/x-patch
Size: 427 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100113/b36e2d18/attachment.bin>

More information about the ffmpeg-devel mailing list