Detlef Riekenberg : ntdll: Add a stub for TokenElevation in NtQueryInformationToken.

Alexandre Julliard julliard at winehq.org
Mon Aug 23 10:50:19 CDT 2010


Module: wine
Branch: master
Commit: 2b76f8661d0994c060a9749c6cec14b45f3e273b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2b76f8661d0994c060a9749c6cec14b45f3e273b

Author: Detlef Riekenberg <wine.dev at 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);




More information about the wine-cvs mailing list