From 978f2ee80766647e193d8602a0845c672e79ce25 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Mon, 24 Nov 2025 07:29:45 -0600 Subject: [PATCH] Copy from slice over raw pointer to Vec --- .../win_webauthn/src/plugin/types.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) 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 cffd0136248..f20f6945c91 100644 --- a/apps/desktop/desktop_native/win_webauthn/src/plugin/types.rs +++ b/apps/desktop/desktop_native/win_webauthn/src/plugin/types.rs @@ -392,11 +392,11 @@ impl TryFrom> for PluginMakeCredentia inner: registration_request as *const WEBAUTHN_CTAPCBOR_MAKE_CREDENTIAL_REQUEST, window_handle: request.hWnd, transaction_id: request.transactionId, - request_signature: Vec::from_raw_parts( + request_signature: std::slice::from_raw_parts( request.pbRequestSignature, request.cbEncodedRequest as usize, - request.cbEncodedRequest as usize, - ), + ) + .to_vec(), }) } } @@ -515,9 +515,9 @@ impl PluginMakeCredentialResponse { "Received null pointer from WebAuthNEncodeMakeCredentialResponse", )); } - let response = unsafe { - Vec::from_raw_parts(response_ptr, response_len as usize, response_len as usize) - }; + // SAFETY: Windows returned successful response code, so we assume that the pointer and length are valid. + let response = + unsafe { std::slice::from_raw_parts(response_ptr, response_len as usize).to_vec() }; Ok(response) } @@ -747,11 +747,11 @@ impl TryFrom> for PluginGetAssertionR inner: assertion_request as *const WEBAUTHN_CTAPCBOR_GET_ASSERTION_REQUEST, window_handle: request.hWnd, transaction_id: request.transactionId, - request_signature: Vec::from_raw_parts( + request_signature: std::slice::from_raw_parts( request.pbRequestSignature, request.cbEncodedRequest as usize, - request.cbEncodedRequest as usize, - ), + ) + .to_vec(), }) } }