added more irql checks

svn path=/trunk/; revision=13714
This commit is contained in:
Thomas Bluemel 2005-02-22 19:25:17 +00:00
parent fee36b29eb
commit f871df2c56
12 changed files with 115 additions and 16 deletions

View file

@ -116,7 +116,7 @@ ExReleaseRundownProtectionEx (
if (Current & EX_RUNDOWN_ACTIVE) if (Current & EX_RUNDOWN_ACTIVE)
{ {
/* Get Pointer */ /* Get Pointer */
PRUNDOWN_DESCRIPTOR RundownDescriptor = (PRUNDOWN_DESCRIPTOR)((ULONG_PTR)RunRef->Ptr & ~EX_RUNDOWN_ACTIVE); PRUNDOWN_DESCRIPTOR RundownDescriptor = (PRUNDOWN_DESCRIPTOR)(Current & ~EX_RUNDOWN_ACTIVE);
if (RundownDescriptor == NULL) if (RundownDescriptor == NULL)
{ {

View file

@ -184,6 +184,8 @@ NtImpersonateThread(IN HANDLE ThreadHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
if(PreviousMode != KernelMode) if(PreviousMode != KernelMode)
@ -499,6 +501,8 @@ PsCreateTeb(HANDLE ProcessHandle,
ULONG TebSize; ULONG TebSize;
PVOID TebBase; PVOID TebBase;
TEB Teb; TEB Teb;
PAGED_CODE();
TebSize = PAGE_SIZE; TebSize = PAGE_SIZE;
@ -672,6 +676,8 @@ NtCreateThread(OUT PHANDLE ThreadHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
if(ThreadContext == NULL) if(ThreadContext == NULL)
{ {
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
@ -852,6 +858,8 @@ PsCreateSystemThread(PHANDLE ThreadHandle,
NTSTATUS Status; NTSTATUS Status;
KIRQL oldIrql; KIRQL oldIrql;
PAGED_CODE();
DPRINT("PsCreateSystemThread(ThreadHandle %x, ProcessHandle %x)\n", DPRINT("PsCreateSystemThread(ThreadHandle %x, ProcessHandle %x)\n",
ThreadHandle,ProcessHandle); ThreadHandle,ProcessHandle);

View file

@ -192,6 +192,8 @@ NtGetContextThread(IN HANDLE ThreadHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
if(PreviousMode != KernelMode) if(PreviousMode != KernelMode)
@ -316,6 +318,8 @@ NtSetContextThread(IN HANDLE ThreadHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
if(PreviousMode != KernelMode) if(PreviousMode != KernelMode)

View file

@ -113,6 +113,8 @@ NtAssignProcessToJobObject(HANDLE JobHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
/* make sure we're having a handle with enough rights, especially the to /* make sure we're having a handle with enough rights, especially the to
@ -200,6 +202,8 @@ NtCreateJobObject(PHANDLE JobHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
PEPROCESS CurrentProcess; PEPROCESS CurrentProcess;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
CurrentProcess = PsGetCurrentProcess(); CurrentProcess = PsGetCurrentProcess();
@ -305,6 +309,8 @@ NtIsProcessInJob(IN HANDLE ProcessHandle,
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
PAGED_CODE();
Status = ObReferenceObjectByHandle(ProcessHandle, Status = ObReferenceObjectByHandle(ProcessHandle,
PROCESS_QUERY_INFORMATION, PROCESS_QUERY_INFORMATION,
PsProcessType, PsProcessType,
@ -367,6 +373,8 @@ NtOpenJobObject(PHANDLE JobHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
HANDLE hJob; HANDLE hJob;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
@ -462,6 +470,8 @@ NtTerminateJobObject(HANDLE JobHandle,
PEJOB Job; PEJOB Job;
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
Status = ObReferenceObjectByHandle(JobHandle, Status = ObReferenceObjectByHandle(JobHandle,

View file

@ -337,6 +337,8 @@ NtTerminateProcess(IN HANDLE ProcessHandle OPTIONAL,
NTSTATUS Status; NTSTATUS Status;
PEPROCESS Process; PEPROCESS Process;
PAGED_CODE();
DPRINT("NtTerminateProcess(ProcessHandle %x, ExitStatus %x)\n", DPRINT("NtTerminateProcess(ProcessHandle %x, ExitStatus %x)\n",
ProcessHandle, ExitStatus); ProcessHandle, ExitStatus);
@ -373,6 +375,8 @@ NtTerminateThread(IN HANDLE ThreadHandle,
PETHREAD Thread; PETHREAD Thread;
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE();
Status = ObReferenceObjectByHandle(ThreadHandle, Status = ObReferenceObjectByHandle(ThreadHandle,
THREAD_TERMINATE, THREAD_TERMINATE,
PsThreadType, PsThreadType,
@ -425,6 +429,8 @@ NtCallTerminatePorts(PETHREAD Thread)
PLIST_ENTRY current_entry; PLIST_ENTRY current_entry;
PEPORT_TERMINATION_REQUEST current; PEPORT_TERMINATION_REQUEST current;
PAGED_CODE();
KeAcquireSpinLock(&Thread->ActiveTimerListLock, &oldIrql); KeAcquireSpinLock(&Thread->ActiveTimerListLock, &oldIrql);
while ((current_entry = RemoveHeadList(&Thread->TerminationPortList)) != while ((current_entry = RemoveHeadList(&Thread->TerminationPortList)) !=
&Thread->TerminationPortList); &Thread->TerminationPortList);
@ -451,6 +457,8 @@ NtRegisterThreadTerminatePort(HANDLE PortHandle)
KIRQL oldIrql; KIRQL oldIrql;
PETHREAD Thread; PETHREAD Thread;
PAGED_CODE();
Status = ObReferenceObjectByHandle(PortHandle, Status = ObReferenceObjectByHandle(PortHandle,
PORT_ALL_ACCESS, PORT_ALL_ACCESS,
LpcPortObjectType, LpcPortObjectType,

View file

@ -207,6 +207,8 @@ NTSTATUS STDCALL
NtQueryDefaultLocale(IN BOOLEAN UserProfile, NtQueryDefaultLocale(IN BOOLEAN UserProfile,
OUT PLCID DefaultLocaleId) OUT PLCID DefaultLocaleId)
{ {
PAGED_CODE();
if (DefaultLocaleId == NULL) if (DefaultLocaleId == NULL)
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
@ -252,6 +254,8 @@ NtSetDefaultLocale(IN BOOLEAN UserProfile,
WCHAR ValueBuffer[20]; WCHAR ValueBuffer[20];
HANDLE UserKey = NULL; HANDLE UserKey = NULL;
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE();
if (UserProfile) if (UserProfile)
{ {
@ -358,6 +362,8 @@ NtQueryDefaultUILanguage(OUT PLANGID LanguageId)
HANDLE UserKey; HANDLE UserKey;
HANDLE KeyHandle; HANDLE KeyHandle;
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE();
Status = RtlOpenCurrentUser(KEY_READ, Status = RtlOpenCurrentUser(KEY_READ,
&UserKey); &UserKey);
@ -431,6 +437,8 @@ NtQueryDefaultUILanguage(OUT PLANGID LanguageId)
NTSTATUS STDCALL NTSTATUS STDCALL
NtQueryInstallUILanguage(OUT PLANGID LanguageId) NtQueryInstallUILanguage(OUT PLANGID LanguageId)
{ {
PAGED_CODE();
*LanguageId = PsInstallUILanguageId; *LanguageId = PsInstallUILanguageId;
return STATUS_SUCCESS; return STATUS_SUCCESS;
@ -451,6 +459,8 @@ NtSetDefaultUILanguage(IN LANGID LanguageId)
HANDLE UserHandle; HANDLE UserHandle;
HANDLE KeyHandle; HANDLE KeyHandle;
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE();
Status = RtlOpenCurrentUser(KEY_WRITE, Status = RtlOpenCurrentUser(KEY_WRITE,
&UserHandle); &UserHandle);

View file

@ -192,6 +192,8 @@ NtOpenProcessTokenEx(
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
if(PreviousMode == UserMode) if(PreviousMode == UserMode)
@ -505,6 +507,8 @@ PsCreatePeb(HANDLE ProcessHandle,
ULONG ViewSize; ULONG ViewSize;
PVOID TableBase; PVOID TableBase;
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE();
/* Allocate the Process Environment Block (PEB) */ /* Allocate the Process Environment Block (PEB) */
Process->TebBlock = (PVOID) MM_ROUND_DOWN(PEB_BASE, MM_VIRTMEM_GRANULARITY); Process->TebBlock = (PVOID) MM_ROUND_DOWN(PEB_BASE, MM_VIRTMEM_GRANULARITY);
@ -1163,6 +1167,8 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
{ {
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
@ -1219,7 +1225,8 @@ NtOpenProcess(OUT PHANDLE ProcessHandle,
"ObjectAttributes %x, ClientId %x { UniP %d, UniT %d })\n", "ObjectAttributes %x, ClientId %x { UniP %d, UniT %d })\n",
ProcessHandle, DesiredAccess, ObjectAttributes, ClientId, ProcessHandle, DesiredAccess, ObjectAttributes, ClientId,
ClientId->UniqueProcess, ClientId->UniqueThread); ClientId->UniqueProcess, ClientId->UniqueThread);
PAGED_CODE();
/* /*
* Not sure of the exact semantics * Not sure of the exact semantics
@ -1315,6 +1322,8 @@ NtQueryInformationProcess(IN HANDLE ProcessHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
DefaultQueryInfoBufferCheck(ProcessInformationClass, DefaultQueryInfoBufferCheck(ProcessInformationClass,
@ -1787,6 +1796,8 @@ NtSetInformationProcess(IN HANDLE ProcessHandle,
ACCESS_MASK Access; ACCESS_MASK Access;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
DefaultSetInfoBufferCheck(ProcessInformationClass, DefaultSetInfoBufferCheck(ProcessInformationClass,
@ -2889,6 +2900,8 @@ PsLockProcess(PEPROCESS Process, BOOL Timeout)
PLARGE_INTEGER Delay = (Timeout ? &PsLockTimeout : NULL); PLARGE_INTEGER Delay = (Timeout ? &PsLockTimeout : NULL);
PKTHREAD CallingThread = KeGetCurrentThread(); PKTHREAD CallingThread = KeGetCurrentThread();
PAGED_CODE();
KeEnterCriticalRegion(); KeEnterCriticalRegion();
for(;;) for(;;)
@ -2946,6 +2959,8 @@ PsLockProcess(PEPROCESS Process, BOOL Timeout)
VOID VOID
PsUnlockProcess(PEPROCESS Process) PsUnlockProcess(PEPROCESS Process)
{ {
PAGED_CODE();
ASSERT(Process->LockOwner == KeGetCurrentThread()); ASSERT(Process->LockOwner == KeGetCurrentThread());
if(InterlockedDecrementUL(&Process->LockCount) == 0) if(InterlockedDecrementUL(&Process->LockCount) == 0)

View file

@ -131,6 +131,8 @@ NtResumeThread(IN HANDLE ThreadHandle,
PETHREAD Thread; PETHREAD Thread;
NTSTATUS Status; NTSTATUS Status;
ULONG Count; ULONG Count;
PAGED_CODE();
DPRINT("NtResumeThead(ThreadHandle %lx SuspendCount %p)\n", DPRINT("NtResumeThead(ThreadHandle %lx SuspendCount %p)\n",
ThreadHandle, SuspendCount); ThreadHandle, SuspendCount);
@ -184,6 +186,8 @@ NtSuspendThread(IN HANDLE ThreadHandle,
PETHREAD Thread; PETHREAD Thread;
NTSTATUS Status; NTSTATUS Status;
ULONG Count; ULONG Count;
PAGED_CODE();
Status = ObReferenceObjectByHandle(ThreadHandle, Status = ObReferenceObjectByHandle(ThreadHandle,
THREAD_SUSPEND_RESUME, THREAD_SUSPEND_RESUME,

View file

@ -992,6 +992,8 @@ NtOpenThread(OUT PHANDLE ThreadHandle,
IN PCLIENT_ID ClientId) IN PCLIENT_ID ClientId)
{ {
NTSTATUS Status = STATUS_INVALID_PARAMETER; NTSTATUS Status = STATUS_INVALID_PARAMETER;
PAGED_CODE();
if((NULL != ThreadHandle)&&(NULL != ObjectAttributes)) if((NULL != ThreadHandle)&&(NULL != ObjectAttributes))
{ {

View file

@ -98,6 +98,8 @@ NtSetInformationThread (IN HANDLE ThreadHandle,
HANDLE Handle; HANDLE Handle;
PVOID Address; PVOID Address;
}u; }u;
PAGED_CODE();
if (ThreadInformationClass <= MaxThreadInfoClass && if (ThreadInformationClass <= MaxThreadInfoClass &&
!SetInformationData[ThreadInformationClass].Implemented) !SetInformationData[ThreadInformationClass].Implemented)
@ -206,21 +208,23 @@ NtQueryInformationThread (IN HANDLE ThreadHandle,
LARGE_INTEGER Count; LARGE_INTEGER Count;
BOOLEAN Last; BOOLEAN Last;
}u; }u;
PAGED_CODE();
if (ThreadInformationClass <= MaxThreadInfoClass && if (ThreadInformationClass <= MaxThreadInfoClass &&
!QueryInformationData[ThreadInformationClass].Implemented) !QueryInformationData[ThreadInformationClass].Implemented)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
if (ThreadInformationClass > MaxThreadInfoClass || if (ThreadInformationClass > MaxThreadInfoClass ||
QueryInformationData[ThreadInformationClass].Size == 0) QueryInformationData[ThreadInformationClass].Size == 0)
{ {
return STATUS_INVALID_INFO_CLASS; return STATUS_INVALID_INFO_CLASS;
} }
if (ThreadInformationLength != QueryInformationData[ThreadInformationClass].Size) if (ThreadInformationLength != QueryInformationData[ThreadInformationClass].Size)
{ {
return STATUS_INFO_LENGTH_MISMATCH; return STATUS_INFO_LENGTH_MISMATCH;
} }
Status = ObReferenceObjectByHandle(ThreadHandle, Status = ObReferenceObjectByHandle(ThreadHandle,
THREAD_QUERY_INFORMATION, THREAD_QUERY_INFORMATION,

View file

@ -82,6 +82,8 @@ NtCallbackReturn (PVOID Result,
PKTRAP_FRAME SavedTrapFrame; PKTRAP_FRAME SavedTrapFrame;
PVOID SavedCallbackStack; PVOID SavedCallbackStack;
PVOID SavedExceptionStack; PVOID SavedExceptionStack;
PAGED_CODE();
Thread = PsGetCurrentThread(); Thread = PsGetCurrentThread();
if (Thread->Tcb.CallbackStack == NULL) if (Thread->Tcb.CallbackStack == NULL)
@ -259,6 +261,8 @@ NtW32Call (IN ULONG RoutineIndex,
NTSTATUS CallbackStatus; NTSTATUS CallbackStatus;
NTW32CALL_SAVED_STATE SavedState; NTW32CALL_SAVED_STATE SavedState;
PNTW32CALL_CALLBACK_STACK AssignedStack; PNTW32CALL_CALLBACK_STACK AssignedStack;
PAGED_CODE();
DPRINT("NtW32Call(RoutineIndex %d, Argument %X, ArgumentLength %d)\n", DPRINT("NtW32Call(RoutineIndex %d, Argument %X, ArgumentLength %d)\n",
RoutineIndex, Argument, ArgumentLength); RoutineIndex, Argument, ArgumentLength);

View file

@ -44,6 +44,8 @@ NTSTATUS SeExchangePrimaryToken(PEPROCESS Process,
PTOKEN OldToken; PTOKEN OldToken;
PTOKEN NewToken = (PTOKEN)NewTokenP; PTOKEN NewToken = (PTOKEN)NewTokenP;
PAGED_CODE();
if (NewToken->TokenType != TokenPrimary) if (NewToken->TokenType != TokenPrimary)
{ {
return(STATUS_UNSUCCESSFUL); return(STATUS_UNSUCCESSFUL);
@ -70,6 +72,8 @@ RtlLengthSidAndAttributes(ULONG Count,
{ {
ULONG i; ULONG i;
ULONG uLength; ULONG uLength;
PAGED_CODE();
uLength = Count * sizeof(SID_AND_ATTRIBUTES); uLength = Count * sizeof(SID_AND_ATTRIBUTES);
for (i = 0; i < Count; i++) for (i = 0; i < Count; i++)
@ -306,6 +310,8 @@ SeCopyClientToken(PACCESS_TOKEN Token,
{ {
NTSTATUS Status; NTSTATUS Status;
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
PAGED_CODE();
InitializeObjectAttributes(&ObjectAttributes, InitializeObjectAttributes(&ObjectAttributes,
NULL, NULL,
@ -340,6 +346,8 @@ SeCreateClientSecurity(IN struct _ETHREAD *Thread,
ULONG g; ULONG g;
PACCESS_TOKEN NewToken; PACCESS_TOKEN NewToken;
PAGED_CODE();
Token = PsReferenceEffectiveToken(Thread, Token = PsReferenceEffectiveToken(Thread,
&TokenType, &TokenType,
&b, &b,
@ -485,6 +493,8 @@ SeImpersonateClient(IN PSECURITY_CLIENT_CONTEXT ClientContext,
{ {
UCHAR b; UCHAR b;
PAGED_CODE();
if (ClientContext->DirectlyAccessClientToken == FALSE) if (ClientContext->DirectlyAccessClientToken == FALSE)
{ {
b = ClientContext->SecurityQos.EffectiveOnly; b = ClientContext->SecurityQos.EffectiveOnly;
@ -569,6 +579,8 @@ NtQueryInformationToken(IN HANDLE TokenHandle,
PTOKEN_GROUPS PtrTokenGroups; PTOKEN_GROUPS PtrTokenGroups;
PTOKEN_DEFAULT_DACL PtrDefaultDacl; PTOKEN_DEFAULT_DACL PtrDefaultDacl;
PTOKEN_STATISTICS PtrTokenStatistics; PTOKEN_STATISTICS PtrTokenStatistics;
PAGED_CODE();
Status = ObReferenceObjectByHandle(TokenHandle, Status = ObReferenceObjectByHandle(TokenHandle,
(TokenInformationClass == TokenSource) ? TOKEN_QUERY_SOURCE : TOKEN_QUERY, (TokenInformationClass == TokenSource) ? TOKEN_QUERY_SOURCE : TOKEN_QUERY,
@ -906,6 +918,8 @@ NtSetInformationToken(IN HANDLE TokenHandle,
TOKEN_OWNER TokenOwnerSet = { 0 }; TOKEN_OWNER TokenOwnerSet = { 0 };
TOKEN_PRIMARY_GROUP TokenPrimaryGroupSet = { 0 }; TOKEN_PRIMARY_GROUP TokenPrimaryGroupSet = { 0 };
DWORD NeededAccess = 0; DWORD NeededAccess = 0;
PAGED_CODE();
switch (TokenInformationClass) switch (TokenInformationClass)
{ {
@ -1042,6 +1056,8 @@ NtDuplicateToken(IN HANDLE ExistingTokenHandle,
PTOKEN Token; PTOKEN Token;
PTOKEN NewToken; PTOKEN NewToken;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = KeGetPreviousMode(); PreviousMode = KeGetPreviousMode();
@ -1151,6 +1167,8 @@ NtAdjustGroupsToken(IN HANDLE TokenHandle,
ULONG b; ULONG b;
ULONG c; ULONG c;
PAGED_CODE();
Status = ObReferenceObjectByHandle(TokenHandle, Status = ObReferenceObjectByHandle(TokenHandle,
?, ?,
SepTokenObjectType, SepTokenObjectType,
@ -1256,6 +1274,8 @@ NtAdjustPrivilegesToken (IN HANDLE TokenHandle,
ULONG c; ULONG c;
#endif #endif
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE();
DPRINT ("NtAdjustPrivilegesToken() called\n"); DPRINT ("NtAdjustPrivilegesToken() called\n");
@ -1612,6 +1632,8 @@ NtCreateToken(OUT PHANDLE TokenHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
if(PreviousMode != KernelMode) if(PreviousMode != KernelMode)
@ -1814,6 +1836,8 @@ NTSTATUS STDCALL
SeQueryAuthenticationIdToken(IN PACCESS_TOKEN Token, SeQueryAuthenticationIdToken(IN PACCESS_TOKEN Token,
OUT PLUID LogonId) OUT PLUID LogonId)
{ {
PAGED_CODE();
*LogonId = ((PTOKEN)Token)->AuthenticationId; *LogonId = ((PTOKEN)Token)->AuthenticationId;
return STATUS_SUCCESS; return STATUS_SUCCESS;
@ -1827,6 +1851,8 @@ SECURITY_IMPERSONATION_LEVEL
STDCALL STDCALL
SeTokenImpersonationLevel(IN PACCESS_TOKEN Token) SeTokenImpersonationLevel(IN PACCESS_TOKEN Token)
{ {
PAGED_CODE();
return ((PTOKEN)Token)->ImpersonationLevel; return ((PTOKEN)Token)->ImpersonationLevel;
} }
@ -1837,6 +1863,8 @@ SeTokenImpersonationLevel(IN PACCESS_TOKEN Token)
TOKEN_TYPE STDCALL TOKEN_TYPE STDCALL
SeTokenType(IN PACCESS_TOKEN Token) SeTokenType(IN PACCESS_TOKEN Token)
{ {
PAGED_CODE();
return ((PTOKEN)Token)->TokenType; return ((PTOKEN)Token)->TokenType;
} }
@ -1904,6 +1932,8 @@ NtOpenThreadTokenEx(IN HANDLE ThreadHandle,
KPROCESSOR_MODE PreviousMode; KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PAGED_CODE();
PreviousMode = ExGetPreviousMode(); PreviousMode = ExGetPreviousMode();
if(PreviousMode != KernelMode) if(PreviousMode != KernelMode)