diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-11-20 17:36:39 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-11-26 13:32:30 +0100 |
commit | 029cf6a91ceb849f31f575111070a113c53b29ee (patch) | |
tree | adb689c745662c0bb6e525446b79fd41840b4d45 /libavformat | |
parent | f7d7ce4717a1331b17d3b09d4ad92feeb1f4b5a3 (diff) | |
download | ffmpeg-029cf6a91ceb849f31f575111070a113c53b29ee.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>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/flacenc.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libavformat/flacenc.c b/libavformat/flacenc.c index 6b8ce8d7ee..1c983486aa 100644 --- a/libavformat/flacenc.c +++ b/libavformat/flacenc.c @@ -347,6 +347,8 @@ static void flac_deinit(struct AVFormatContext *s) FlacMuxerContext *c = s->priv_data; avpriv_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) |