avformat/matroskaenc: Don't segfault when seekability changes
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Fri, 1 May 2020 18:21:45 +0000 (20:21 +0200)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Wed, 20 May 2020 08:51:30 +0000 (10:51 +0200)
commit588d258ea430cea3e954da8e553746e6f1a4b5bc
tree4990fa87c5203548aefda5b8f0f2e34f62bc6f1b
parentf2117e1e9c5c87e794d6dff872d48026cf24db2f
avformat/matroskaenc: Don't segfault when seekability changes

If the Matroska muxer's AVIOContext was unseekable when writing the
header, but is seekable when writing the trailer, the code for writing
the trailer presumes that a dynamic buffer exists and tries to update
its content in order to overwrite data that has already been
preliminarily written when writing the header, yet said buffer doesn't
exist as it has been written finally and not preliminarily when writing
the header (because of the unseekability it was presumed that one won't
be able to update the data anyway).

This commit adds a check for this and also for a similar situation
involving updating extradata with new data from packet side-data.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
(cherry picked from commit 8aabcf6c1151b9e50ae5447da6709a72022b9a60)
libavformat/matroskaenc.c