diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2019-11-06 03:49:01 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2019-11-24 16:01:56 +0100 |
commit | 4470ab1e0ee1c36cca83f161567177145f412605 (patch) | |
tree | 0e08f105c08839e4f17e0e2299faa9691d31fa5b /libavformat/matroskaenc.c | |
parent | d65aaf8ea986bb138ca0a6e86825c5ce03b9013a (diff) | |
download | ffmpeg-4470ab1e0ee1c36cca83f161567177145f412605.tar.gz |
avformat/matroskaenc: Fix potential leak of cached packet
If mkv_write_trailer() is not called, the cached audio packet might
leak; so unref it in mkv_deinit().
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat/matroskaenc.c')
-rw-r--r-- | libavformat/matroskaenc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index ba48aae454..ce08b1b338 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -390,6 +390,8 @@ static void mkv_deinit(AVFormatContext *s) { MatroskaMuxContext *mkv = s->priv_data; + av_packet_unref(&mkv->cur_audio_pkt); + ffio_free_dyn_buf(&mkv->cluster_bc); ffio_free_dyn_buf(&mkv->info_bc); ffio_free_dyn_buf(&mkv->tracks_bc); @@ -2534,7 +2536,6 @@ static int mkv_write_trailer(AVFormatContext *s) // check if we have an audio packet cached if (mkv->cur_audio_pkt.size > 0) { ret = mkv_write_packet_internal(s, &mkv->cur_audio_pkt, 0); - av_packet_unref(&mkv->cur_audio_pkt); if (ret < 0) { av_log(s, AV_LOG_ERROR, "Could not write cached audio packet ret:%d\n", ret); |