From 50aa1622e1655d9746677355edc2384247e6ebe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Wed, 6 Mar 2019 09:14:04 +0000 Subject: [PATCH] vorbisdec: fix leak of header buffers handle_header_buffer() does no take ownership of the buffer passed. Fixes leaks in various unit tests. --- ext/vorbis/gstvorbisdec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ext/vorbis/gstvorbisdec.c b/ext/vorbis/gstvorbisdec.c index 3862c620f8..a0b48b71b9 100644 --- a/ext/vorbis/gstvorbisdec.c +++ b/ext/vorbis/gstvorbisdec.c @@ -358,6 +358,7 @@ header_read_error: } } +/* Does not take ownership of buffer */ static GstFlowReturn vorbis_dec_handle_header_buffer (GstVorbisDec * vd, GstBuffer * buffer) { @@ -615,17 +616,20 @@ check_pending_headers (GstVorbisDec * vd) /* All good, let's reset ourselves and process the headers */ vorbis_dec_reset ((GstAudioDecoder *) vd); result = vorbis_dec_handle_header_buffer (vd, buffer1); + gst_buffer_unref (buffer1); if (result != GST_FLOW_OK) { gst_buffer_unref (buffer3); gst_buffer_unref (buffer5); return result; } result = vorbis_dec_handle_header_buffer (vd, buffer3); + gst_buffer_unref (buffer3); if (result != GST_FLOW_OK) { gst_buffer_unref (buffer5); return result; } result = vorbis_dec_handle_header_buffer (vd, buffer5); + gst_buffer_unref (buffer5); return result;