[PATCH v2 1/2] advapi32/tests: Add some tests for querying the security of pseudo-handles.

Zebediah Figura z.figura12 at gmail.com
Tue Jan 26 18:02:52 CST 2021


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
v2: Add tests for NtQuerySecurityObject(); also fix a warning.

 dlls/advapi32/tests/security.c | 39 ++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 020e69277e0..40fd1316624 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7878,6 +7878,44 @@ static void test_create_process_token_child(void)
     }
 }
 
+static void test_pseudo_handle_security(void)
+{
+    char buffer[200];
+    PSECURITY_DESCRIPTOR sd = buffer, sd_ptr;
+    NTSTATUS status;
+    DWORD size;
+    BOOL ret;
+
+    ret = GetKernelObjectSecurity(GetCurrentProcess(), OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+    ok(ret, "got error %u\n", GetLastError());
+
+    status = NtQuerySecurityObject(GetCurrentProcess(), OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+    ok(!status, "got %#x\n", status);
+
+    ret = GetKernelObjectSecurity(GetCurrentThread(), OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+    ok(ret, "got error %u\n", GetLastError());
+
+    status = NtQuerySecurityObject(GetCurrentThread(), OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+    ok(!status, "got %#x\n", status);
+
+    SetLastError(0xdeadbeef);
+    ret = GetKernelObjectSecurity(HKEY_CLASSES_ROOT, OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+    ok(!ret, "expected failure\n");
+    ok(GetLastError() == ERROR_INVALID_HANDLE, "got error %u\n", GetLastError());
+
+    status = NtQuerySecurityObject(HKEY_CLASSES_ROOT, OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+    ok(status == STATUS_INVALID_HANDLE, "got %#x\n", status);
+
+    ret = GetSecurityInfo(HKEY_CLASSES_ROOT, SE_REGISTRY_KEY,
+            DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL, &sd_ptr);
+    todo_wine ok(!ret, "got error %u\n", ret);
+    LocalFree(sd_ptr);
+
+    ret = GetSecurityInfo(HKEY_CLASSES_ROOT, SE_KERNEL_OBJECT,
+            DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL, &sd_ptr);
+    ok(ret == ERROR_INVALID_HANDLE, "got error %u\n", ret);
+}
+
 START_TEST(security)
 {
     init();
@@ -7940,6 +7978,7 @@ START_TEST(security)
     test_BuildSecurityDescriptorW();
     test_duplicate_handle_access();
     test_create_process_token();
+    test_pseudo_handle_security();
 
     /* Must be the last test, modifies process token */
     test_token_security_descriptor();
-- 
2.30.0




More information about the wine-devel mailing list