From 562f1886061cc1c9b4a1d7641eb3b16d8a8393bc Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Thu, 18 Dec 2025 09:55:48 -0600 Subject: [PATCH] Free COM-allocated memory --- apps/desktop/desktop_native/win_webauthn/src/plugin/types.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/desktop/desktop_native/win_webauthn/src/plugin/types.rs b/apps/desktop/desktop_native/win_webauthn/src/plugin/types.rs index c120dcac236..8dd9521f9ce 100644 --- a/apps/desktop/desktop_native/win_webauthn/src/plugin/types.rs +++ b/apps/desktop/desktop_native/win_webauthn/src/plugin/types.rs @@ -9,7 +9,7 @@ use std::{mem::MaybeUninit, ptr::NonNull}; use base64::{engine::general_purpose::STANDARD, Engine as _}; use windows::{ core::{GUID, HRESULT}, - Win32::Foundation::HWND, + Win32::{Foundation::HWND, System::Com::CoTaskMemFree}, }; use windows_core::BOOL; @@ -650,6 +650,9 @@ impl PluginMakeCredentialResponse { )); } let response = std::slice::from_raw_parts(response_ptr, response_len as usize).to_vec(); + // Ideally, we wouldn't have Windows allocate this in COM, and then + // we reallocate locally and then reallocate for COM. + CoTaskMemFree(Some(response_ptr.cast())); Ok(response) }