[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