Robert Reif : advapi32: Try again with different access mask if LsaOpenPolicy fails with STATUS_ACCESS_DENIED .
Module: wine Branch: master Commit: 70071af6adc14381d2ef4410ce5b28f0ed3aca9e URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=70071af6adc14381d2ef4410... Author: Robert Reif <reif(a)earthlink.net> Date: Mon Aug 14 07:17:55 2006 -0400 advapi32: Try again with different access mask if LsaOpenPolicy fails with STATUS_ACCESS_DENIED. --- dlls/advapi32/tests/lsa.c | 11 ++++++++++- dlls/advapi32/tests/security.c | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/dlls/advapi32/tests/lsa.c b/dlls/advapi32/tests/lsa.c index da357ce..31fd802 100644 --- a/dlls/advapi32/tests/lsa.c +++ b/dlls/advapi32/tests/lsa.c @@ -62,9 +62,18 @@ static void test_lsa(void) LSA_OBJECT_ATTRIBUTES object_attributes; ZeroMemory(&object_attributes, sizeof(object_attributes)); + object_attributes.Length = sizeof(object_attributes); status = pLsaOpenPolicy( NULL, &object_attributes, POLICY_ALL_ACCESS, &handle); - ok(status == STATUS_SUCCESS, "LsaOpenPolicy() returned 0x%08lx\n", status); + ok(status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED, + "LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08lx\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\n"); + status = pLsaOpenPolicy( NULL, &object_attributes, POLICY_VIEW_LOCAL_INFORMATION, &handle); + ok(status == STATUS_SUCCESS, "LsaOpenPolicy(POLICY_VIEW_LOCAL_INFORMATION) returned 0x%08lx\n", status); + } if (status == STATUS_SUCCESS) { PPOLICY_AUDIT_EVENTS_INFO audit_events_info; diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 4aa6e79..51d76e0 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -941,9 +941,18 @@ static void test_LookupAccountSid(void) LSA_OBJECT_ATTRIBUTES object_attributes; ZeroMemory(&object_attributes, sizeof(object_attributes)); + object_attributes.Length = sizeof(object_attributes); status = pLsaOpenPolicy( NULL, &object_attributes, POLICY_ALL_ACCESS, &handle); - ok(status == STATUS_SUCCESS, "LsaOpenPolicy() returned 0x%08lx\n", status); + ok(status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED, + "LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08lx\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\n"); + status = pLsaOpenPolicy( NULL, &object_attributes, POLICY_VIEW_LOCAL_INFORMATION, &handle); + ok(status == STATUS_SUCCESS, "LsaOpenPolicy(POLICY_VIEW_LOCAL_INFORMATION) returned 0x%08lx\n", status); + } if (status == STATUS_SUCCESS) {
participants (1)
-
Alexandre Julliard