From dcaf5686cedc439f7a0e604ee99858b3b4a6bdc0 Mon Sep 17 00:00:00 2001 From: David L Bean Date: Wed, 26 Jul 2023 18:58:44 -0400 Subject: [PATCH] [ADVAPI32] Don't treat a structure pointer as a string pointer (#5478) Add a string pointer local variable, assign it and operate on it. This should eliminate an exception and make LsapIsLocalComputer() function operate correctly. CORE-18996 --- dll/win32/advapi32/sec/lsa.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dll/win32/advapi32/sec/lsa.c b/dll/win32/advapi32/sec/lsa.c index f88cc664e66..4b137aaecb9 100644 --- a/dll/win32/advapi32/sec/lsa.c +++ b/dll/win32/advapi32/sec/lsa.c @@ -23,15 +23,17 @@ LsapIsLocalComputer(PLSA_UNICODE_STRING ServerName) DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1; BOOL Result; LPWSTR buf; + PCWSTR pSrvName; if (ServerName == NULL || ServerName->Length == 0 || ServerName->Buffer == NULL) return TRUE; + pSrvName = ServerName->Buffer; buf = HeapAlloc(GetProcessHeap(), 0, dwSize * sizeof(WCHAR)); Result = GetComputerNameW(buf, &dwSize); - if (Result && (ServerName->Buffer[0] == '\\') && (ServerName->Buffer[1] == '\\')) - ServerName += 2; - Result = Result && !lstrcmpW(ServerName->Buffer, buf); + if (Result && (pSrvName[0] == L'\\') && (pSrvName[1] == L'\\')) + pSrvName += 2; + Result = Result && !lstrcmpW(pSrvName, buf); HeapFree(GetProcessHeap(), 0, buf); return Result;