Robert Reif : advapi32: Try again with different access mask if LsaOpenPolicy fails with STATUS_ACCESS_DENIED .

Alexandre Julliard julliard at wine.codeweavers.com
Mon Aug 14 14:10:18 CDT 2006


Module: wine
Branch: master
Commit: 70071af6adc14381d2ef4410ce5b28f0ed3aca9e
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=70071af6adc14381d2ef4410ce5b28f0ed3aca9e

Author: Robert Reif <reif at 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)
             {




More information about the wine-cvs mailing list