From 65bd0207543ee04cc6cadfc3ca4148f19842402b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Sj=C3=B6lund?= Date: Thu, 16 Mar 2023 13:25:39 +0100 Subject: [PATCH] webrtc: patch leak caused by early return In webrtc_data_channel_send functions, both data and string, an early return on a non-open datachannel caused it to leak the buffer used for pushing to appsrc, meaning any buffer sent after leaving the open state was leaked in full. Part-of: --- subprojects/gst-plugins-bad/ext/webrtc/webrtcdatachannel.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/subprojects/gst-plugins-bad/ext/webrtc/webrtcdatachannel.c b/subprojects/gst-plugins-bad/ext/webrtc/webrtcdatachannel.c index 0260c61721..1ca7868ad1 100644 --- a/subprojects/gst-plugins-bad/ext/webrtc/webrtcdatachannel.c +++ b/subprojects/gst-plugins-bad/ext/webrtc/webrtcdatachannel.c @@ -871,6 +871,7 @@ webrtc_data_channel_send_data (GstWebRTCDataChannel * base_channel, GST_WEBRTC_DATA_CHANNEL_UNLOCK (channel); g_set_error (error, GST_WEBRTC_ERROR, GST_WEBRTC_ERROR_INVALID_STATE, "channel is not open"); + gst_buffer_unref (buffer); return FALSE; } GST_WEBRTC_DATA_CHANNEL_UNLOCK (channel); @@ -945,6 +946,7 @@ webrtc_data_channel_send_string (GstWebRTCDataChannel * base_channel, GST_WEBRTC_DATA_CHANNEL_UNLOCK (channel); g_set_error (error, GST_WEBRTC_ERROR, GST_WEBRTC_ERROR_INVALID_STATE, "channel is not open"); + gst_buffer_unref (buffer); return FALSE; } GST_WEBRTC_DATA_CHANNEL_UNLOCK (channel);