wsla: Fix incorrect call to EqualSid causing WSLAUserSession to always be created (#13789)

This commit is contained in:
Blue 2025-12-01 19:19:32 +00:00 committed by GitHub
parent 315cc27a5a
commit 8aab7bdc09
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -50,11 +50,15 @@ HRESULT WSLAUserSessionFactory::CreateInstance(_In_ IUnknown* pUnkOuter, _In_ RE
THROW_HR_IF(CO_E_SERVER_STOPPING, !g_sessions.has_value());
auto session = std::find_if(g_sessions->begin(), g_sessions->end(), [&tokenInfo](auto it) {
return EqualSid(it->GetUserSid(), &tokenInfo->User.Sid);
return EqualSid(it->GetUserSid(), tokenInfo->User.Sid);
});
if (session == g_sessions->end())
{
wil::unique_hlocal_string sid;
THROW_IF_WIN32_BOOL_FALSE(ConvertSidToStringSid(tokenInfo->User.Sid, &sid));
WSL_LOG("WSLAUserSession created", TraceLoggingValue(sid.get(), "sid"));
session = g_sessions->insert(g_sessions->end(), std::make_shared<WSLAUserSessionImpl>(userToken.get(), std::move(tokenInfo)));
}