Module: wine Branch: master Commit: 2b76f8661d0994c060a9749c6cec14b45f3e273b URL: http://source.winehq.org/git/wine.git/?a=commit;h=2b76f8661d0994c060a9749c6c...
Author: Detlef Riekenberg wine.dev@web.de Date: Sun Aug 22 11:32:46 2010 +0200
ntdll: Add a stub for TokenElevation in NtQueryInformationToken.
---
dlls/ntdll/nt.c | 61 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 43 insertions(+), 18 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index a2b1023..4472734 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -249,29 +249,47 @@ NTSTATUS WINAPI NtQueryInformationToken( ULONG tokeninfolength, PULONG retlen ) { - ULONG len; + static const ULONG info_len [] = + { + 0, + 0, /* TokenUser */ + 0, /* TokenGroups */ + 0, /* TokenPrivileges */ + 0, /* TokenOwner */ + 0, /* TokenPrimaryGroup */ + 0, /* TokenDefaultDacl */ + sizeof(TOKEN_SOURCE), /* TokenSource */ + sizeof(TOKEN_TYPE), /* TokenType */ + sizeof(SECURITY_IMPERSONATION_LEVEL), /* TokenImpersonationLevel */ + sizeof(TOKEN_STATISTICS), /* TokenStatistics */ + 0, /* TokenRestrictedSids */ + 0, /* TokenSessionId */ + 0, /* TokenGroupsAndPrivileges */ + 0, /* TokenSessionReference */ + 0, /* TokenSandBoxInert */ + 0, /* TokenAuditPolicy */ + 0, /* TokenOrigin */ + 0, /* TokenElevationType */ + 0, /* TokenLinkedToken */ + sizeof(TOKEN_ELEVATION), /* TokenElevation */ + 0, /* TokenHasRestrictions */ + 0, /* TokenAccessInformation */ + 0, /* TokenVirtualizationAllowed */ + 0, /* TokenVirtualizationEnabled */ + 0, /* TokenIntegrityLevel */ + 0, /* TokenUIAccess */ + 0, /* TokenMandatoryPolicy */ + 0 /* TokenLogonSid */ + }; + + ULONG len = 0; NTSTATUS status = STATUS_SUCCESS;
TRACE("(%p,%d,%p,%d,%p)\n", token,tokeninfoclass,tokeninfo,tokeninfolength,retlen);
- switch (tokeninfoclass) - { - case TokenSource: - len = sizeof(TOKEN_SOURCE); - break; - case TokenType: - len = sizeof (TOKEN_TYPE); - break; - case TokenImpersonationLevel: - len = sizeof(SECURITY_IMPERSONATION_LEVEL); - break; - case TokenStatistics: - len = sizeof(TOKEN_STATISTICS); - break; - default: - len = 0; - } + if (tokeninfoclass < MaxTokenInfoClass) + len = info_len[tokeninfoclass];
if (retlen) *retlen = len;
@@ -489,6 +507,13 @@ NTSTATUS WINAPI NtQueryInformationToken( } SERVER_END_REQ; break; + case TokenElevation: + { + TOKEN_ELEVATION *elevation = tokeninfo; + FIXME("QueryInformationToken( ..., TokenElevation, ...) semi-stub\n"); + elevation->TokenIsElevated = TRUE; + } + break; default: { ERR("Unhandled Token Information class %d!\n", tokeninfoclass);