]> git.sesse.net Git - ffmpeg/commitdiff
avformat/webpenc: Fix memleak when trailer is never written
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Thu, 18 Mar 2021 22:27:57 +0000 (23:27 +0100)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Tue, 23 Mar 2021 23:30:45 +0000 (00:30 +0100)
When the trailer is never written (or when a stream switches from
non-animation mode to animation mode mid-stream), a cached packet
(if existing) would leak. Fix this by adding a deinit function.

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

index d5edf892897acc061c015f7f97c4c52e5d556a71..ed8325c02d7423791a2eded40c9fdc5c9f2fceec 100644 (file)
@@ -191,6 +191,13 @@ static int webp_write_trailer(AVFormatContext *s)
     return 0;
 }
 
+static void webp_deinit(AVFormatContext *s)
+{
+    WebpContext *w = s->priv_data;
+
+    av_packet_unref(&w->last_pkt);
+}
+
 #define OFFSET(x) offsetof(WebpContext, x)
 #define ENC AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
@@ -214,6 +221,7 @@ AVOutputFormat ff_webp_muxer = {
     .init           = webp_init,
     .write_packet   = webp_write_packet,
     .write_trailer  = webp_write_trailer,
+    .deinit         = webp_deinit,
     .priv_class     = &webp_muxer_class,
     .flags          = AVFMT_VARIABLE_FPS,
 };