diff options
author | Tim-Philipp Müller <tim@centricular.com> | 2019-03-06 09:14:04 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2019-05-01 17:45:01 +0100 |
commit | 53214e47309d116b1f6b4558bf0965d1d5e2849b (patch) | |
tree | ed1924acb2af080a4d38a63ac958877daabb970a | |
parent | 886189380f8f71324dacf3658ab1c388d79cd894 (diff) | |
download | gstreamer-plugins-base-53214e47309d116b1f6b4558bf0965d1d5e2849b.tar.gz |
vorbisdec: fix leak of header buffers
handle_header_buffer() does no take ownership of
the buffer passed.
Fixes leaks in various unit tests.
-rw-r--r-- | ext/vorbis/gstvorbisdec.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/vorbis/gstvorbisdec.c b/ext/vorbis/gstvorbisdec.c index 3862c620f..a0b48b71b 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; |