From eba814763a654d1c982f2142b6a70cf7d0ae1590 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Fri, 10 Dec 2010 12:53:25 +0100 Subject: [PATCH] advapi32: Return the computer name as referenced domain name in LookupAccountName. --- dlls/advapi32/security.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 0458033cf97..e24d90fd2f0 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -2629,9 +2629,8 @@ static BOOL lookup_user_account_name(PSID Sid, PDWORD cbSid, LPWSTR ReferencedDo HANDLE token; BOOL ret; PSID pSid; - static const WCHAR dm[] = {'D','O','M','A','I','N',0}; + WCHAR domainName[MAX_COMPUTERNAME_LENGTH + 1]; DWORD nameLen; - LPCWSTR domainName; if (!OpenThreadToken(GetCurrentThread(), TOKEN_READ, TRUE, &token)) { @@ -2655,9 +2654,12 @@ static BOOL lookup_user_account_name(PSID Sid, PDWORD cbSid, LPWSTR ReferencedDo } *cbSid = GetLengthSid(pSid); - domainName = dm; - nameLen = strlenW(domainName); - + nameLen = MAX_COMPUTERNAME_LENGTH + 1; + if (!GetComputerNameW(domainName, &nameLen)) + { + domainName[0] = 0; + nameLen = 0; + } if (*cchReferencedDomainName <= nameLen || !ret) { SetLastError(ERROR_INSUFFICIENT_BUFFER); @@ -2683,9 +2685,8 @@ static BOOL lookup_computer_account_name(PSID Sid, PDWORD cbSid, LPWSTR Referenc { MAX_SID local; BOOL ret; - static const WCHAR dm[] = {'D','O','M','A','I','N',0}; + WCHAR domainName[MAX_COMPUTERNAME_LENGTH + 1]; DWORD nameLen; - LPCWSTR domainName; if ((ret = ADVAPI_GetComputerSid(&local))) { @@ -2699,9 +2700,12 @@ static BOOL lookup_computer_account_name(PSID Sid, PDWORD cbSid, LPWSTR Referenc *cbSid = GetLengthSid(&local); } - domainName = dm; - nameLen = strlenW(domainName); - + nameLen = MAX_COMPUTERNAME_LENGTH + 1; + if (!GetComputerNameW(domainName, &nameLen)) + { + domainName[0] = 0; + nameLen = 0; + } if (*cchReferencedDomainName <= nameLen || !ret) { SetLastError(ERROR_INSUFFICIENT_BUFFER); @@ -2898,11 +2902,12 @@ BOOL WINAPI LookupAccountNameW( LPCWSTR lpSystemName, LPCWSTR lpAccountName, PSI BOOL ret, handled; LSA_UNICODE_STRING account; - FIXME("%s %s %p %p %p %p %p - stub\n", debugstr_w(lpSystemName), debugstr_w(lpAccountName), + TRACE("%s %s %p %p %p %p %p\n", debugstr_w(lpSystemName), debugstr_w(lpAccountName), Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse); if (!ADVAPI_IsLocalComputer( lpSystemName )) { + FIXME("remote computer not supported\n"); SetLastError( RPC_S_SERVER_UNAVAILABLE ); return FALSE; }