diff --git a/dlls/advapi32/tests/lsa.c b/dlls/advapi32/tests/lsa.c index 4daf75f58d1..81bcf210693 100644 --- a/dlls/advapi32/tests/lsa.c +++ b/dlls/advapi32/tests/lsa.c @@ -35,39 +35,6 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0); -static HMODULE hadvapi32; -static NTSTATUS (WINAPI *pLsaClose)(LSA_HANDLE); -static NTSTATUS (WINAPI *pLsaEnumerateAccountRights)(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG); -static NTSTATUS (WINAPI *pLsaFreeMemory)(PVOID); -static NTSTATUS (WINAPI *pLsaOpenPolicy)(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE); -static NTSTATUS (WINAPI *pLsaQueryInformationPolicy)(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*); -static BOOL (WINAPI *pConvertSidToStringSidA)(PSID,LPSTR*); -static BOOL (WINAPI *pConvertStringSidToSidA)(LPCSTR,PSID*); -static NTSTATUS (WINAPI *pLsaLookupNames2)(LSA_HANDLE,ULONG,ULONG,PLSA_UNICODE_STRING,PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_SID2*); -static NTSTATUS (WINAPI *pLsaLookupSids)(LSA_HANDLE,ULONG,PSID*,LSA_REFERENCED_DOMAIN_LIST**,LSA_TRANSLATED_NAME**); -static PVOID (WINAPI *pFreeSid)(PSID); - -static BOOL init(void) -{ - hadvapi32 = GetModuleHandleA("advapi32.dll"); - - pLsaClose = (void*)GetProcAddress(hadvapi32, "LsaClose"); - pLsaEnumerateAccountRights = (void*)GetProcAddress(hadvapi32, "LsaEnumerateAccountRights"); - pLsaFreeMemory = (void*)GetProcAddress(hadvapi32, "LsaFreeMemory"); - pLsaOpenPolicy = (void*)GetProcAddress(hadvapi32, "LsaOpenPolicy"); - pLsaQueryInformationPolicy = (void*)GetProcAddress(hadvapi32, "LsaQueryInformationPolicy"); - pConvertSidToStringSidA = (void*)GetProcAddress(hadvapi32, "ConvertSidToStringSidA"); - pConvertStringSidToSidA = (void*)GetProcAddress(hadvapi32, "ConvertStringSidToSidA"); - pLsaLookupNames2 = (void*)GetProcAddress(hadvapi32, "LsaLookupNames2"); - pLsaLookupSids = (void*)GetProcAddress(hadvapi32, "LsaLookupSids"); - pFreeSid = (void*)GetProcAddress(hadvapi32, "FreeSid"); - - if (pLsaClose && pLsaEnumerateAccountRights && pLsaFreeMemory && pLsaOpenPolicy && pLsaQueryInformationPolicy && pConvertSidToStringSidA && pConvertStringSidToSidA && pFreeSid) - return TRUE; - - return FALSE; -} - static void test_lsa(void) { NTSTATUS status; @@ -77,14 +44,14 @@ static void test_lsa(void) ZeroMemory(&object_attributes, sizeof(object_attributes)); object_attributes.Length = sizeof(object_attributes); - status = pLsaOpenPolicy( NULL, &object_attributes, POLICY_ALL_ACCESS, &handle); + status = LsaOpenPolicy( NULL, &object_attributes, POLICY_ALL_ACCESS, &handle); ok(status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED, "LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08x\n", status); /* try a more restricted access mask if necessary */ if (status == STATUS_ACCESS_DENIED) { trace("LsaOpenPolicy(POLICY_ALL_ACCESS) failed, trying POLICY_VIEW_LOCAL_INFORMATION|POLICY_LOOKUP_NAMES\n"); - status = pLsaOpenPolicy( NULL, &object_attributes, POLICY_VIEW_LOCAL_INFORMATION|POLICY_LOOKUP_NAMES, &handle); + status = LsaOpenPolicy( NULL, &object_attributes, POLICY_VIEW_LOCAL_INFORMATION|POLICY_LOOKUP_NAMES, &handle); ok(status == STATUS_SUCCESS, "LsaOpenPolicy(POLICY_VIEW_LOCAL_INFORMATION|POLICY_LOOKUP_NAMES) returned 0x%08x\n", status); } @@ -96,21 +63,20 @@ static void test_lsa(void) HANDLE token; BOOL ret; - status = pLsaQueryInformationPolicy(handle, PolicyAuditEventsInformation, (PVOID*)&audit_events_info); + status = LsaQueryInformationPolicy(handle, PolicyAuditEventsInformation, (void **)&audit_events_info); if (status == STATUS_ACCESS_DENIED) skip("Not enough rights to retrieve PolicyAuditEventsInformation\n"); else ok(status == STATUS_SUCCESS, "LsaQueryInformationPolicy(PolicyAuditEventsInformation) failed, returned 0x%08x\n", status); - if (status == STATUS_SUCCESS) { - pLsaFreeMemory((LPVOID)audit_events_info); - } + if (status == STATUS_SUCCESS) + LsaFreeMemory(audit_events_info); - status = pLsaQueryInformationPolicy(handle, PolicyPrimaryDomainInformation, (PVOID*)&primary_domain_info); + status = LsaQueryInformationPolicy(handle, PolicyPrimaryDomainInformation, (void **)&primary_domain_info); ok(status == STATUS_SUCCESS, "LsaQueryInformationPolicy(PolicyPrimaryDomainInformation) failed, returned 0x%08x\n", status); if (status == STATUS_SUCCESS) { if (primary_domain_info->Sid) { LPSTR strsid; - if (pConvertSidToStringSidA(primary_domain_info->Sid, &strsid)) + if (ConvertSidToStringSidA(primary_domain_info->Sid, &strsid)) { if (primary_domain_info->Name.Buffer) { LPSTR name = NULL; @@ -129,17 +95,16 @@ static void test_lsa(void) } else trace("Running on a standalone system.\n"); - pLsaFreeMemory((LPVOID)primary_domain_info); + LsaFreeMemory(primary_domain_info); } - status = pLsaQueryInformationPolicy(handle, PolicyAccountDomainInformation, (PVOID*)&account_domain_info); + status = LsaQueryInformationPolicy(handle, PolicyAccountDomainInformation, (void **)&account_domain_info); ok(status == STATUS_SUCCESS, "LsaQueryInformationPolicy(PolicyAccountDomainInformation) failed, returned 0x%08x\n", status); - if (status == STATUS_SUCCESS) { - pLsaFreeMemory((LPVOID)account_domain_info); - } + if (status == STATUS_SUCCESS) + LsaFreeMemory(account_domain_info); /* This isn't supported in NT4 */ - status = pLsaQueryInformationPolicy(handle, PolicyDnsDomainInformation, (PVOID*)&dns_domain_info); + status = LsaQueryInformationPolicy(handle, PolicyDnsDomainInformation, (void **)&dns_domain_info); ok(status == STATUS_SUCCESS || status == STATUS_INVALID_PARAMETER, "LsaQueryInformationPolicy(PolicyDnsDomainInformation) failed, returned 0x%08x\n", status); if (status == STATUS_SUCCESS) { @@ -152,7 +117,7 @@ static void test_lsa(void) WCHAR guidstrW[64]; UINT len; guidstrW[0] = '\0'; - pConvertSidToStringSidA(dns_domain_info->Sid, &strsid); + ConvertSidToStringSidA(dns_domain_info->Sid, &strsid); StringFromGUID2(&dns_domain_info->DomainGuid, guidstrW, sizeof(guidstrW)/sizeof(WCHAR)); len = WideCharToMultiByte( CP_ACP, 0, guidstrW, -1, NULL, 0, NULL, NULL ); guidstr = LocalAlloc( 0, len ); @@ -183,7 +148,7 @@ static void test_lsa(void) } else trace("Running on a standalone system.\n"); - pLsaFreeMemory((LPVOID)dns_domain_info); + LsaFreeMemory(dns_domain_info); } /* We need a valid SID to pass to LsaEnumerateAccountRights */ @@ -207,10 +172,10 @@ static void test_lsa(void) ULONG rights_count; rights = (PLSA_UNICODE_STRING) 0xdeadbeaf; rights_count = 0xcafecafe; - status = pLsaEnumerateAccountRights(handle, token_user->User.Sid, &rights, &rights_count); + status = LsaEnumerateAccountRights(handle, token_user->User.Sid, &rights, &rights_count); ok(status == STATUS_SUCCESS || status == STATUS_OBJECT_NAME_NOT_FOUND, "Unexpected status 0x%x\n", status); if (status == STATUS_SUCCESS) - pLsaFreeMemory( rights ); + LsaFreeMemory( rights ); else ok(rights == NULL && rights_count == 0, "Expected rights and rights_count to be set to 0 on failure\n"); } @@ -219,7 +184,7 @@ static void test_lsa(void) CloseHandle( token ); } - status = pLsaClose(handle); + status = LsaClose(handle); ok(status == STATUS_SUCCESS, "LsaClose() failed, returned 0x%08x\n", status); } } @@ -253,12 +218,6 @@ static void test_LsaLookupNames2(void) LSA_UNICODE_STRING name[3]; LPSTR account, sid_dom; - if (!pLsaLookupNames2) - { - win_skip("LsaLookupNames2 not available\n"); - return; - } - if ((PRIMARYLANGID(LANGIDFROMLCID(GetSystemDefaultLCID())) != LANG_ENGLISH) || (PRIMARYLANGID(LANGIDFROMLCID(GetThreadLocale())) != LANG_ENGLISH)) { @@ -269,7 +228,7 @@ static void test_LsaLookupNames2(void) memset(&attrs, 0, sizeof(attrs)); attrs.Length = sizeof(attrs); - status = pLsaOpenPolicy(NULL, &attrs, POLICY_ALL_ACCESS, &handle); + status = LsaOpenPolicy(NULL, &attrs, POLICY_ALL_ACCESS, &handle); ok(status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED, "LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08x\n", status); @@ -277,7 +236,7 @@ static void test_LsaLookupNames2(void) if (status == STATUS_ACCESS_DENIED) { trace("LsaOpenPolicy(POLICY_ALL_ACCESS) failed, trying POLICY_VIEW_LOCAL_INFORMATION\n"); - status = pLsaOpenPolicy(NULL, &attrs, POLICY_LOOKUP_NAMES, &handle); + status = LsaOpenPolicy(NULL, &attrs, POLICY_LOOKUP_NAMES, &handle); ok(status == STATUS_SUCCESS, "LsaOpenPolicy(POLICY_VIEW_LOCAL_INFORMATION) returned 0x%08x\n", status); } if (status != STATUS_SUCCESS) @@ -301,7 +260,7 @@ static void test_LsaLookupNames2(void) /* account name only */ sids = NULL; domains = NULL; - status = pLsaLookupNames2(handle, 0, 1, &name[0], &domains, &sids); + status = LsaLookupNames2(handle, 0, 1, &name[0], &domains, &sids); ok(status == STATUS_SUCCESS, "expected STATUS_SUCCESS, got %x)\n", status); ok(sids[0].Use == SidTypeWellKnownGroup, "expected SidTypeWellKnownGroup, got %u\n", sids[0].Use); ok(sids[0].Flags == 0, "expected 0, got 0x%08x\n", sids[0].Flags); @@ -309,24 +268,24 @@ static void test_LsaLookupNames2(void) get_sid_info(sids[0].Sid, &account, &sid_dom); ok(!strcmp(account, "LOCAL SERVICE"), "expected \"LOCAL SERVICE\", got \"%s\"\n", account); ok(!strcmp(sid_dom, "NT AUTHORITY"), "expected \"NT AUTHORITY\", got \"%s\"\n", sid_dom); - pLsaFreeMemory(sids); - pLsaFreeMemory(domains); + LsaFreeMemory(sids); + LsaFreeMemory(domains); /* unknown account name */ sids = NULL; domains = NULL; - status = pLsaLookupNames2(handle, 0, 1, &name[1], &domains, &sids); + status = LsaLookupNames2(handle, 0, 1, &name[1], &domains, &sids); ok(status == STATUS_NONE_MAPPED, "expected STATUS_NONE_MAPPED, got %x)\n", status); ok(sids[0].Use == SidTypeUnknown, "expected SidTypeUnknown, got %u\n", sids[0].Use); ok(sids[0].Flags == 0, "expected 0, got 0x%08x\n", sids[0].Flags); ok(domains->Entries == 0, "expected 0, got %u\n", domains->Entries); - pLsaFreeMemory(sids); - pLsaFreeMemory(domains); + LsaFreeMemory(sids); + LsaFreeMemory(domains); /* account + domain */ sids = NULL; domains = NULL; - status = pLsaLookupNames2(handle, 0, 1, &name[2], &domains, &sids); + status = LsaLookupNames2(handle, 0, 1, &name[2], &domains, &sids); ok(status == STATUS_SUCCESS, "expected STATUS_SUCCESS, got %x)\n", status); ok(sids[0].Use == SidTypeWellKnownGroup, "expected SidTypeWellKnownGroup, got %u\n", sids[0].Use); ok(sids[0].Flags == 0, "expected 0, got 0x%08x\n", sids[0].Flags); @@ -334,27 +293,27 @@ static void test_LsaLookupNames2(void) get_sid_info(sids[0].Sid, &account, &sid_dom); ok(!strcmp(account, "LOCAL SERVICE"), "expected \"LOCAL SERVICE\", got \"%s\"\n", account); ok(!strcmp(sid_dom, "NT AUTHORITY"), "expected \"NT AUTHORITY\", got \"%s\"\n", sid_dom); - pLsaFreeMemory(sids); - pLsaFreeMemory(domains); + LsaFreeMemory(sids); + LsaFreeMemory(domains); /* all three */ sids = NULL; domains = NULL; - status = pLsaLookupNames2(handle, 0, 3, name, &domains, &sids); + status = LsaLookupNames2(handle, 0, 3, name, &domains, &sids); ok(status == STATUS_SOME_NOT_MAPPED, "expected STATUS_SOME_NOT_MAPPED, got %x)\n", status); ok(sids[0].Use == SidTypeWellKnownGroup, "expected SidTypeWellKnownGroup, got %u\n", sids[0].Use); ok(sids[1].Use == SidTypeUnknown, "expected SidTypeUnknown, got %u\n", sids[1].Use); ok(sids[2].Use == SidTypeWellKnownGroup, "expected SidTypeWellKnownGroup, got %u\n", sids[2].Use); ok(sids[0].DomainIndex == 0, "expected 0, got %u\n", sids[0].DomainIndex); ok(domains->Entries == 1, "expected 1, got %u\n", domains->Entries); - pLsaFreeMemory(sids); - pLsaFreeMemory(domains); + LsaFreeMemory(sids); + LsaFreeMemory(domains); HeapFree(GetProcessHeap(), 0, name[0].Buffer); HeapFree(GetProcessHeap(), 0, name[1].Buffer); HeapFree(GetProcessHeap(), 0, name[2].Buffer); - status = pLsaClose(handle); + status = LsaClose(handle); ok(status == STATUS_SUCCESS, "LsaClose() failed, returned 0x%08x\n", status); } @@ -373,7 +332,7 @@ static void test_LsaLookupSids(void) memset(&attrs, 0, sizeof(attrs)); attrs.Length = sizeof(attrs); - status = pLsaOpenPolicy(NULL, &attrs, POLICY_LOOKUP_NAMES, &policy); + status = LsaOpenPolicy(NULL, &attrs, POLICY_LOOKUP_NAMES, &policy); ok(status == STATUS_SUCCESS, "got 0x%08x\n", status); ret = OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, &token); @@ -386,7 +345,7 @@ static void test_LsaLookupSids(void) ret = GetTokenInformation(token, TokenUser, user, size, &size); ok(ret, "got %d\n", ret); - status = pLsaLookupSids(policy, 1, &user->User.Sid, &list, &names); + status = LsaLookupSids(policy, 1, &user->User.Sid, &list, &names); ok(status == STATUS_SUCCESS, "got 0x%08x\n", status); ok(list->Entries > 0, "got %d\n", list->Entries); @@ -398,14 +357,14 @@ static void test_LsaLookupSids(void) list->Domains[0].Name.Length); } - pLsaFreeMemory(names); - pLsaFreeMemory(list); + LsaFreeMemory(names); + LsaFreeMemory(list); HeapFree(GetProcessHeap(), 0, user); CloseHandle(token); - status = pLsaClose(policy); + status = LsaClose(policy); ok(status == STATUS_SUCCESS, "got 0x%08x\n", status); } @@ -422,13 +381,13 @@ static void test_LsaLookupSids_NullBuffers(void) memset(&attrs, 0, sizeof(attrs)); attrs.Length = sizeof(attrs); - status = pLsaOpenPolicy(NULL, &attrs, POLICY_LOOKUP_NAMES, &policy); + status = LsaOpenPolicy(NULL, &attrs, POLICY_LOOKUP_NAMES, &policy); ok(status == STATUS_SUCCESS, "got 0x%08x\n", status); - ret = pConvertStringSidToSidA("S-1-1-0", &sid); - ok(ret == TRUE, "pConvertStringSidToSidA returned false\n"); + ret = ConvertStringSidToSidA("S-1-1-0", &sid); + ok(ret == TRUE, "ConvertStringSidToSidA returned false\n"); - status = pLsaLookupSids(policy, 1, &sid, &list, &names); + status = LsaLookupSids(policy, 1, &sid, &list, &names); ok(status == STATUS_SUCCESS, "got 0x%08x\n", status); ok(list->Entries > 0, "got %d\n", list->Entries); @@ -442,22 +401,17 @@ static void test_LsaLookupSids_NullBuffers(void) ok(list->Domains[0].Name.Buffer != NULL, "domain[0] name buffer is null\n"); } - pLsaFreeMemory(names); - pLsaFreeMemory(list); + LsaFreeMemory(names); + LsaFreeMemory(list); - pFreeSid(sid); + FreeSid(sid); - status = pLsaClose(policy); + status = LsaClose(policy); ok(status == STATUS_SUCCESS, "got 0x%08x\n", status); } START_TEST(lsa) { - if (!init()) { - win_skip("Needed functions are not available\n"); - return; - } - test_lsa(); test_LsaLookupNames2(); test_LsaLookupSids();