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