diff --git a/ntoskrnl/se/tokencls.c b/ntoskrnl/se/tokencls.c index 278db460bfd..f76f8e48d62 100644 --- a/ntoskrnl/se/tokencls.c +++ b/ntoskrnl/se/tokencls.c @@ -1072,6 +1072,64 @@ NtQueryInformationToken( break; } + case TokenElevationType: + { + DPRINT("NtQueryInformationToken(TokenElevationType)\n"); + + RequiredLength = sizeof(TOKEN_ELEVATION_TYPE); + + _SEH2_TRY + { + if (TokenInformationLength >= RequiredLength) + { + /* FIXME: HACK */ + *((PTOKEN_ELEVATION_TYPE)TokenInformation) = TokenElevationTypeFull; + } + else + { + Status = STATUS_BUFFER_TOO_SMALL; + } + + *ReturnLength = RequiredLength; + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END; + + break; + } + + case TokenElevation: + { + DPRINT("NtQueryInformationToken(TokenElevation)\n"); + + RequiredLength = sizeof(TOKEN_ELEVATION); + + _SEH2_TRY + { + if (TokenInformationLength >= RequiredLength) + { + /* FIXME: HACK */ + ((PTOKEN_ELEVATION)TokenInformation)->TokenIsElevated = TRUE; + } + else + { + Status = STATUS_BUFFER_TOO_SMALL; + } + + *ReturnLength = RequiredLength; + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END; + + break; + } + default: DPRINT1("NtQueryInformationToken(%d) invalid information class\n", TokenInformationClass); Status = STATUS_INVALID_INFO_CLASS;