LookupAccountNameW() any account but first user rejected
Paul Bryan Roberts
pbronline-wine at yahoo.co.uk
Thu Sep 25 19:08:54 CDT 2008
---
dlls/advapi32/security.c | 28 +++++++++++++++++++++++++++-
dlls/advapi32/tests/security.c | 13 +++++--------
2 files changed, 32 insertions(+), 9 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 1d183e6..51d2de1 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -2536,6 +2536,13 @@ BOOL WINAPI LookupAccountNameW( LPCWSTR lpSystemName, LPCWSTR lpAccountName, PSI
FIXME("%s %s %p %p %p %p %p - stub\n", debugstr_w(lpSystemName), debugstr_w(lpAccountName),
Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse);
+ if (!ADVAPI_IsLocalComputer(lpSystemName))
+ {
+ /*FIXME("Only local computer supported!\n");*/
+ SetLastError(ERROR_NONE_MAPPED);
+ return FALSE;
+ }
+
if (!lpAccountName || !strcmpW(lpAccountName, Blank))
{
lpAccountName = BUILTIN;
@@ -2546,7 +2553,6 @@ BOOL WINAPI LookupAccountNameW( LPCWSTR lpSystemName, LPCWSTR lpAccountName, PSI
if (!strcmpW(lpAccountName, ACCOUNT_SIDS[i].account))
{
char sidBuffer [SECURITY_MAX_SID_SIZE];
-
size_t sidLen = SECURITY_MAX_SID_SIZE;
ret = CreateWellKnownSid(ACCOUNT_SIDS[i].type, NULL, sidBuffer, &sidLen);
@@ -2583,6 +2589,26 @@ BOOL WINAPI LookupAccountNameW( LPCWSTR lpSystemName, LPCWSTR lpAccountName, PSI
}
}
+
+ {
+ WCHAR userName [UNLEN + 1];
+ size_t nameLen = UNLEN + 1;
+
+ ret = GetUserNameW(userName, &nameLen);
+
+ if (ret && strcmpW(lpAccountName, userName) != 0)
+ {
+ /* FIXME("Only first user account supported!\n"); */
+ SetLastError(ERROR_NONE_MAPPED);
+ ret = FALSE;
+ }
+
+ if (!ret)
+ {
+ return ret;
+ }
+ }
+
ret = AllocateAndInitializeSid(&identifierAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 87fe422..1c84b14 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -1640,14 +1640,11 @@ static void test_LookupAccountName(void)
domain_size = 0;
ret = LookupAccountNameA(NULL, "oogabooga", NULL, &sid_size, NULL, &domain_size, &sid_use);
ok(!ret, "Expected 0, got %d\n", ret);
- todo_wine
- {
- ok(GetLastError() == ERROR_NONE_MAPPED ||
- broken(GetLastError() == ERROR_TRUSTED_RELATIONSHIP_FAILURE),
- "Expected ERROR_NONE_MAPPED, got %d\n", GetLastError());
- ok(sid_size == 0, "Expected 0, got %d\n", sid_size);
- ok(domain_size == 0, "Expected 0, got %d\n", domain_size);
- }
+ ok(GetLastError() == ERROR_NONE_MAPPED ||
+ broken(GetLastError() == ERROR_TRUSTED_RELATIONSHIP_FAILURE),
+ "Expected ERROR_NONE_MAPPED, got %d\n", GetLastError());
+ ok(sid_size == 0, "Expected 0, got %d\n", sid_size);
+ ok(domain_size == 0, "Expected 0, got %d\n", domain_size);
HeapFree(GetProcessHeap(), 0, psid);
HeapFree(GetProcessHeap(), 0, domain);
--
1.5.4.3
--------------090302060109010303090208--
More information about the wine-patches
mailing list