mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 09:03:25 +00:00
added more irql checks
svn path=/trunk/; revision=13714
This commit is contained in:
parent
fee36b29eb
commit
f871df2c56
12 changed files with 115 additions and 16 deletions
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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))
|
||||||
{
|
{
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue