Module: wine Branch: stable Commit: a286ae91a6990fcd47735ec4ee2ea48e27b7fa07 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a286ae91a6990fcd47735ec4ee...
Author: Hans Leidekker hans@codeweavers.com Date: Fri Dec 10 12:53:25 2010 +0100
advapi32: Return the computer name as referenced domain name in LookupAccountName. (cherry picked from commit eba814763a654d1c982f2142b6a70cf7d0ae1590)
---
dlls/advapi32/security.c | 27 ++++++++++++++++----------- 1 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 2d0ed48..e8d7927 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; }