lavf/webm_chunk: Fix NULL dereference
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Fri, 19 Apr 2019 22:03:15 +0000 (00:03 +0200)
committerPaul B Mahol <onemda@gmail.com>
Fri, 12 Jul 2019 12:56:27 +0000 (14:56 +0200)
commit8c6ee7626bcce7c270360f33b60dc7ef99939fc3
tree42635652610b23204fd511f7815135b100151389
parent2601eef850f1ec37fdcc6f36c89eeb1d361de348
lavf/webm_chunk: Fix NULL dereference

The earlier version of the webm_chunk muxer had several bugs:

1. If the first packet of an audio stream didn't have a PTS of zero,
then no chunk will be started before a packet is delivered to the
underlying Matroska/WebM muxer, i.e. the AVFormatContext used to write
these packets had a NULL as AVIOContext for output. This is behind the
crash in ticket #5752.

2. If an error happens during writing a packet, the underlyimg
Matroska/WebM muxer context is freed. This leads to a use-after-free
coupled with a double-free in webm_chunk_write_trailer (which supposes
that the underlying AVFormatContext is still valid).

3. Even when no error occurs at all, webm_chunk_write_trailer is still
buggy: After the underlying Matroska/WebM muxer has written its trailer,
ending the chunk implicitly flushes it again which is illegal at this
point.

These bugs have been fixed.

Fixes #5752.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavformat/webm_chunk.c