From 911d8402884bb559923954be912a400b293ede43 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 8f935837ee..3fd15a0b00 100644 --- a/subprojects/gst-plugins-bad/sys/wasapi/gstwasapiutil.c +++ b/subprojects/gst-plugins-bad/sys/wasapi/gstwasapiutil.c @@ -407,6 +407,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) @@ -469,8 +470,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 */ @@ -556,7 +561,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); @@ -570,7 +575,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: