From 1cd222b451627e2a3dab50c91eac52994a103428 Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Thu, 12 Jul 2007 15:32:00 +0100 Subject: [PATCH] ntdll: The impersonation level in NtDuplicateToken should be taken from the SecurityQualityOfService member of ObjectAttributes if present. --- dlls/ntdll/nt.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index a303dcfd77e..27a18efb146 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -61,6 +61,16 @@ NTSTATUS WINAPI NtDuplicateToken( ImpersonationLevel, TokenType, NewToken); dump_ObjectAttributes(ObjectAttributes); + if (ObjectAttributes && ObjectAttributes->SecurityQualityOfService) + { + SECURITY_QUALITY_OF_SERVICE *SecurityQOS = ObjectAttributes->SecurityQualityOfService; + TRACE("ObjectAttributes->SecurityQualityOfService = {%d, %d, %d, %s}\n", + SecurityQOS->Length, SecurityQOS->ImpersonationLevel, + SecurityQOS->ContextTrackingMode, + SecurityQOS->EffectiveOnly ? "TRUE" : "FALSE"); + ImpersonationLevel = SecurityQOS->ImpersonationLevel; + } + SERVER_START_REQ( duplicate_token ) { req->handle = ExistingToken;