From 2981650435019e104da6d8c5c831dd8665550694 Mon Sep 17 00:00:00 2001 From: Paul Bryan Roberts Date: Sat, 18 Oct 2008 21:53:24 +0100 Subject: [PATCH] advapi32: LookupAccountSidW() - handle first user account. --- dlls/advapi32/security.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index a33d6ec6dc1..29ff696c793 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -38,6 +38,7 @@ #include "objbase.h" #include "iads.h" #include "advapi32_misc.h" +#include "lmcons.h" #include "wine/debug.h" #include "wine/unicode.h" @@ -1953,12 +1954,6 @@ LookupAccountSidA( DWORD accountSizeW = *accountSize; DWORD domainSizeW = *domainSize; - TRACE("(%s,sid=%s,%p,%p(%u),%p,%p(%u),%p)\n", - debugstr_a(system),debugstr_sid(sid), - account,accountSize,accountSize?*accountSize:0, - domain,domainSize,domainSize?*domainSize:0, - name_use); - if (system) { len = MultiByteToWideChar( CP_ACP, 0, system, -1, NULL, 0 ); systemW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ); @@ -2022,6 +2017,7 @@ LookupAccountSidW( const WCHAR * dm = NULL; SID_NAME_USE use = 0; LPWSTR computer_name = NULL; + LPWSTR account_name = NULL; TRACE("(%s,sid=%s,%p,%p(%u),%p,%p(%u),%p)\n", debugstr_w(system),debugstr_sid(sid), @@ -2107,6 +2103,16 @@ LookupAccountSidW( break; case DOMAIN_ALIAS_RID_RAS_SERVERS: ac = RAS_and_IAS_Servers; + break; + case 1000: /* first user account */ + size = UNLEN + 1; + account_name = HeapAlloc( + GetProcessHeap(), 0, size * sizeof(WCHAR)); + if (GetUserNameW(account_name, &size)) + ac = account_name; + else + dm = NULL; + break; default: dm = NULL; @@ -2145,10 +2151,12 @@ LookupAccountSidW( else *accountSize = ac_len + 1; *name_use = use; + HeapFree(GetProcessHeap(), 0, account_name); HeapFree(GetProcessHeap(), 0, computer_name); return status; } + HeapFree(GetProcessHeap(), 0, account_name); HeapFree(GetProcessHeap(), 0, computer_name); SetLastError(ERROR_NONE_MAPPED); return FALSE;