[PATCH v3 1/2] advapi32/tests: Add some tests for querying the security of pseudo-handles.
Zebediah Figura
z.figura12 at gmail.com
Thu Feb 4 21:24:10 CST 2021
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
v3: Test all root keys.
dlls/advapi32/tests/security.c | 50 ++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 6d2d5f56f1b..da752f8c413 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7871,6 +7871,55 @@ static void test_create_process_token_child(void)
}
}
+static void test_pseudo_handle_security(void)
+{
+ char buffer[200];
+ PSECURITY_DESCRIPTOR sd = buffer, sd_ptr;
+ unsigned int i;
+ DWORD size;
+ BOOL ret;
+
+ static const HKEY keys[] =
+ {
+ HKEY_CLASSES_ROOT,
+ HKEY_CURRENT_USER,
+ HKEY_LOCAL_MACHINE,
+ HKEY_USERS,
+ HKEY_PERFORMANCE_DATA,
+ HKEY_CURRENT_CONFIG,
+ HKEY_DYN_DATA,
+ };
+
+ ret = GetKernelObjectSecurity(GetCurrentProcess(), OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+ ok(ret, "got error %u\n", GetLastError());
+
+ ret = GetKernelObjectSecurity(GetCurrentThread(), OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+ ok(ret, "got error %u\n", GetLastError());
+
+ for (i = 0; i < ARRAY_SIZE(keys); ++i)
+ {
+ SetLastError(0xdeadbeef);
+ ret = GetKernelObjectSecurity(keys[i], OWNER_SECURITY_INFORMATION, &sd, sizeof(buffer), &size);
+ ok(!ret, "key %p: expected failure\n", keys[i]);
+ ok(GetLastError() == ERROR_INVALID_HANDLE, "key %p: got error %u\n", keys[i], GetLastError());
+
+ ret = GetSecurityInfo(keys[i], SE_REGISTRY_KEY,
+ DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL, &sd_ptr);
+ if (keys[i] == HKEY_PERFORMANCE_DATA)
+ ok(ret == ERROR_INVALID_HANDLE, "key %p: got error %u\n", keys[i], ret);
+ else if (keys[i] == HKEY_DYN_DATA)
+ todo_wine ok(ret == ERROR_CALL_NOT_IMPLEMENTED || broken(ret == ERROR_INVALID_HANDLE) /* <7 */,
+ "key %p: got error %u\n", keys[i], ret);
+ else
+ todo_wine ok(!ret, "key %p: got error %u\n", keys[i], ret);
+ LocalFree(sd_ptr);
+
+ ret = GetSecurityInfo(keys[i], SE_KERNEL_OBJECT,
+ DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL, &sd_ptr);
+ ok(ret == ERROR_INVALID_HANDLE, "key %p: got error %u\n", keys[i], ret);
+ }
+}
+
START_TEST(security)
{
init();
@@ -7935,6 +7984,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.20.1
More information about the wine-devel
mailing list