From b793c3e03ba0d6f1321c159fcd840f40629ea97d Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Wed, 21 Feb 2024 21:50:20 +0900 Subject: [PATCH] wasapi: Fix alloc/free function mismatch ... and fix leak in wasapi device provider Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3326 Part-of: --- .../gst-plugins-bad/sys/wasapi/gstwasapiutil.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/subprojects/gst-plugins-bad/sys/wasapi/gstwasapiutil.c b/subprojects/gst-plugins-bad/sys/wasapi/gstwasapiutil.c index a8bd999e76..b214189793 100644 --- a/subprojects/gst-plugins-bad/sys/wasapi/gstwasapiutil.c +++ b/subprojects/gst-plugins-bad/sys/wasapi/gstwasapiutil.c @@ -415,6 +415,7 @@ gst_wasapi_util_get_devices (GstMMDeviceEnumerator * self, GstDevice *device; GstStructure *props; GstCaps *caps; + gboolean parse_ret; hr = IMMDeviceCollection_Item (device_collection, ii, &item); if (hr != S_OK) @@ -477,8 +478,12 @@ gst_wasapi_util_get_devices (GstMMDeviceEnumerator * self, goto next; } - if (!gst_wasapi_util_parse_waveformatex ((WAVEFORMATEXTENSIBLE *) format, - gst_static_caps_get (&scaps), &caps, NULL)) + parse_ret = + gst_wasapi_util_parse_waveformatex ((WAVEFORMATEXTENSIBLE *) format, + gst_static_caps_get (&scaps), &caps, NULL); + CoTaskMemFree (format); + + if (!parse_ret) goto next; /* Set some useful properties */ @@ -564,7 +569,7 @@ gst_wasapi_util_get_device_format (GstElement * self, return FALSE; } - format = malloc (var.blob.cbSize); + format = CoTaskMemAlloc (var.blob.cbSize); memcpy (format, var.blob.pBlobData, var.blob.cbSize); PropVariantClear (&var); @@ -578,7 +583,7 @@ gst_wasapi_util_get_device_format (GstElement * self, goto out; GST_ERROR_OBJECT (self, "AudioEngine DeviceFormat not supported"); - free (format); + CoTaskMemFree (format); return FALSE; out: