Jinoh Kang : advapi32/tests: Test that default object owner match the token owner.

Alexandre Julliard julliard at winehq.org
Wed Jul 20 15:55:31 CDT 2022


Module: wine
Branch: master
Commit: 9e7e6d29f6cd0a34000e164bd3f54b937c9e2881
URL:    https://gitlab.winehq.org/wine/wine/-/commit/9e7e6d29f6cd0a34000e164bd3f54b937c9e2881

Author: Jinoh Kang <jinoh.kang.kr at gmail.com>
Date:   Tue Jul 19 23:58:21 2022 +0900

advapi32/tests: Test that default object owner match the token owner.

---

 dlls/advapi32/tests/security.c | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 26753c25959..0c3d696c4ec 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -1765,6 +1765,24 @@ static void test_AccessCheck(void)
     HeapFree(GetProcessHeap(), 0, PrivSet);
 }
 
+static TOKEN_OWNER *get_alloc_token_owner( HANDLE token )
+{
+    TOKEN_OWNER *token_owner;
+    DWORD size;
+    BOOL ret;
+
+    ret = GetTokenInformation( token, TokenOwner, NULL, 0, &size );
+    ok(!ret, "Expected failure, got %d\n", ret);
+    ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
+       "Expected ERROR_INSUFFICIENT_BUFFER, got %ld\n", GetLastError());
+
+    token_owner = HeapAlloc( GetProcessHeap(), 0, size );
+    ret = GetTokenInformation( token, TokenOwner, token_owner, size, &size );
+    ok(ret, "GetTokenInformation failed with error %ld\n", GetLastError());
+
+    return token_owner;
+}
+
 /* test GetTokenInformation for the various attributes */
 static void test_token_attr(void)
 {
@@ -6321,7 +6339,8 @@ static void test_TokenIntegrityLevel(void)
 
 static void test_default_dacl_owner_sid(void)
 {
-    HANDLE handle;
+    TOKEN_OWNER *token_owner;
+    HANDLE handle, token;
     BOOL ret, defaulted, present, found;
     DWORD size, index;
     SECURITY_DESCRIPTOR *sd;
@@ -6330,6 +6349,13 @@ static void test_default_dacl_owner_sid(void)
     ACL *dacl;
     ACCESS_ALLOWED_ACE *ace;
 
+    ret = OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY, &token );
+    ok(ret, "OpenProcessToken failed with error %ld\n", GetLastError());
+
+    token_owner = get_alloc_token_owner( token );
+
+    CloseHandle( token );
+
     sd = HeapAlloc( GetProcessHeap(), 0, SECURITY_DESCRIPTOR_MIN_LENGTH );
     ret = InitializeSecurityDescriptor( sd, SECURITY_DESCRIPTOR_REVISION );
     ok( ret, "error %lu\n", GetLastError() );
@@ -6354,6 +6380,8 @@ static void test_default_dacl_owner_sid(void)
     ok( ret, "error %lu\n", GetLastError() );
     ok( owner != (void *)0xdeadbeef, "owner not set\n" );
     ok( !defaulted, "owner defaulted\n" );
+    todo_wine
+    ok( EqualSid( owner, token_owner->Owner ), "owner shall equal token owner\n" );
 
     dacl = (void *)0xdeadbeef;
     present = FALSE;
@@ -6377,6 +6405,8 @@ static void test_default_dacl_owner_sid(void)
     HeapFree( GetProcessHeap(), 0, sa.lpSecurityDescriptor );
     HeapFree( GetProcessHeap(), 0, sd );
     CloseHandle( handle );
+
+    HeapFree( GetProcessHeap(), 0, token_owner );
 }
 
 static void test_AdjustTokenPrivileges(void)




More information about the wine-cvs mailing list