ntdll: Improve stubs for NtGet/SetInformationToken(TokenDefaultDacl).

Hans Leidekker hans at codeweavers.com
Wed Apr 15 07:59:56 CDT 2009


diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index f775d10..0274721 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -1180,6 +1180,7 @@ static void test_token_attr(void)
     TOKEN_PRIVILEGES *Privileges;
     TOKEN_GROUPS *Groups;
     TOKEN_USER *User;
+    TOKEN_DEFAULT_DACL *Dacl;
     BOOL ret;
     DWORD i, GLE;
     LPSTR SidString;
@@ -1283,6 +1284,15 @@ static void test_token_attr(void)
     ok(ImpersonationLevel == SecurityAnonymous, "ImpersonationLevel should have been SecurityAnonymous instead of %d\n", ImpersonationLevel);
 
     CloseHandle(ImpersonationToken);
+
+    /* default dacl */
+    ret = GetTokenInformation(Token, TokenDefaultDacl, NULL, 0, &Size);
+    ok(!ret && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
+        "GetTokenInformation(TokenDefaultDacl) failed with error %d\n", GetLastError());
+    Dacl = HeapAlloc(GetProcessHeap(), 0, Size);
+    ret = GetTokenInformation(Token, TokenDefaultDacl, Dacl, Size, &Size);
+    ok(ret, "GetTokenInformation(TokenDefaultDacl) failed with error %u\n", GetLastError());
+
     CloseHandle(Token);
 }
 
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index d2e133c..2f40811 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -243,7 +243,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
         len = sizeof(TOKEN_PRIMARY_GROUP);
         break;
     case TokenDefaultDacl:
-        len = sizeof(TOKEN_DEFAULT_DACL);
+        len = sizeof(TOKEN_DEFAULT_DACL) + sizeof(ACL);
         break;
     case TokenSource:
         len = sizeof(TOKEN_SOURCE);
@@ -441,6 +441,23 @@ NTSTATUS WINAPI NtQueryInformationToken(
         }
         SERVER_END_REQ;
         break;
+    case TokenDefaultDacl:
+        if (tokeninfo)
+        {
+            TOKEN_DEFAULT_DACL *token = (TOKEN_DEFAULT_DACL *)tokeninfo;
+            ACL *acl;
+
+            FIXME("returning empty DACL\n");
+
+            acl = token->DefaultDacl = (ACL *)token + sizeof(TOKEN_DEFAULT_DACL);
+
+            acl->AclRevision = ACL_REVISION;
+            acl->Sbz1        = 0;
+            acl->AclSize     = sizeof(ACL);
+            acl->AceCount    = 0;
+            acl->Sbz2        = 0;
+        }
+        break;
     default:
         {
             ERR("Unhandled Token Information class %d!\n", tokeninfoclass);
@@ -462,6 +479,16 @@ NTSTATUS WINAPI NtSetInformationToken(
 {
     FIXME("%p %d %p %u\n", TokenHandle, TokenInformationClass,
           TokenInformation, TokenInformationLength);
+
+    switch (TokenInformationClass)
+    {
+    case TokenDefaultDacl:
+        FIXME("returning success for TokenDefaultDacl\n");
+        return STATUS_SUCCESS;
+    default:
+        break;
+    }
+
     return STATUS_NOT_IMPLEMENTED;
 }
 



More information about the wine-patches mailing list