aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-11-20 17:36:39 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-02-27 07:20:59 +0100
commite30b61c261dedf318a2e68c9268409fb94362e36 (patch)
tree08b83277d582ad638a709d59ee0388ae66747aef
parenteb5c81f3737d430b534c963985959196643a6993 (diff)
downloadffmpeg-e30b61c261dedf318a2e68c9268409fb94362e36.tar.gz
avformat/flacenc: Fix memleak when writing attached pictures fails
The FLAC muxer currently stores an attached picture corresponding to an AVStream in AVStream.priv_data. The AVPacket contained therein is unreferenced after it has been written. The AVPacket structure itself is then freed generically as AVStream.priv_data. And this can lead to memleaks if an attached picture is not written: It might be because the trailer is never written or because writing a previous attached picture failed in case error_recognition is set to explode. Therefore free the packets properly (i.e. with av_packet_free()) in the muxer's deinit function. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> (cherry picked from commit 029cf6a91ceb849f31f575111070a113c53b29ee)
-rw-r--r--libavformat/flacenc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libavformat/flacenc.c b/libavformat/flacenc.c
index b947a3b067..da0338dcb1 100644
--- a/libavformat/flacenc.c
+++ b/libavformat/flacenc.c
@@ -346,6 +346,8 @@ static void flac_deinit(struct AVFormatContext *s)
FlacMuxerContext *c = s->priv_data;
ff_packet_list_free(&c->queue, &c->queue_end);
+ for (unsigned i = 0; i < s->nb_streams; i++)
+ av_packet_free((AVPacket **)&s->streams[i]->priv_data);
}
static int flac_write_packet(struct AVFormatContext *s, AVPacket *pkt)