diff --git a/dom/webauthn/WinWebAuthnService.cpp b/dom/webauthn/WinWebAuthnService.cpp index e379ff6d2d8c..56dfa8c19a38 100644 --- a/dom/webauthn/WinWebAuthnService.cpp +++ b/dom/webauthn/WinWebAuthnService.cpp @@ -971,10 +971,16 @@ WinWebAuthnService::HasPendingConditionalGet(uint64_t aBrowsingContextId, NS_IMETHODIMP WinWebAuthnService::GetAutoFillEntries( uint64_t aTransactionId, nsTArray>& aRv) { - auto guard = mTransactionState.Lock(); - if (guard->isNothing() || guard->ref().transactionId != aTransactionId || - guard->ref().pendingSignArgs.isNothing()) { - return NS_ERROR_NOT_AVAILABLE; + aRv.Clear(); + nsString rpId; + + { + auto guard = mTransactionState.Lock(); + if (guard->isNothing() || guard->ref().transactionId != aTransactionId || + guard->ref().pendingSignArgs.isNothing()) { + return NS_ERROR_NOT_AVAILABLE; + } + Unused << guard->ref().pendingSignArgs.ref()->GetRpId(rpId); } StaticAutoReadLock moduleLock(gWinWebAuthnModuleLock); @@ -982,8 +988,6 @@ WinWebAuthnService::GetAutoFillEntries( return NS_ERROR_NOT_AVAILABLE; } - aRv.Clear(); - if (gWinWebauthnGetApiVersionNumber() < WEBAUTHN_API_VERSION_4) { // GetPlatformCredentialList was added in version 4. Earlier versions // can still present a generic "Use a Passkey" autofill entry, so @@ -991,9 +995,6 @@ WinWebAuthnService::GetAutoFillEntries( return NS_OK; } - nsString rpId; - Unused << guard->ref().pendingSignArgs.ref()->GetRpId(rpId); - WEBAUTHN_GET_CREDENTIALS_OPTIONS getCredentialsOptions{ WEBAUTHN_GET_CREDENTIALS_OPTIONS_VERSION_1, rpId.get(), // pwszRpId