- use inlined probing macros for basic types
- minor optimizations by comparing the processor mode against KernelMode
(==0) instead of UserMode (==1)
Modified: trunk/reactos/ntoskrnl/cm/ntfunc.c
Modified: trunk/reactos/ntoskrnl/ex/event.c
Modified: trunk/reactos/ntoskrnl/ex/sysinfo.c
Modified: trunk/reactos/ntoskrnl/include/internal/ob.h
Modified: trunk/reactos/ntoskrnl/io/file.c
Modified: trunk/reactos/ntoskrnl/io/iocomp.c
Modified: trunk/reactos/ntoskrnl/io/plugplay.c
Modified: trunk/reactos/ntoskrnl/kdbg/kdb.c
Modified: trunk/reactos/ntoskrnl/ke/apc.c
Modified: trunk/reactos/ntoskrnl/ke/catch.c
Modified: trunk/reactos/ntoskrnl/ke/i386/fpu.c
Modified: trunk/reactos/ntoskrnl/ke/kthread.c
Modified: trunk/reactos/ntoskrnl/ke/queue.c
Modified: trunk/reactos/ntoskrnl/ke/wait.c
Modified: trunk/reactos/ntoskrnl/lpc/connect.c
Modified: trunk/reactos/ntoskrnl/mm/mdl.c
Modified: trunk/reactos/ntoskrnl/mm/pagefile.c
Modified: trunk/reactos/ntoskrnl/mm/section.c
Modified: trunk/reactos/ntoskrnl/mm/virtual.c
Modified: trunk/reactos/ntoskrnl/ob/dirobj.c
Modified: trunk/reactos/ntoskrnl/ob/handle.c
Modified: trunk/reactos/ntoskrnl/ob/symlink.c
Modified: trunk/reactos/ntoskrnl/ob/wait.c
Modified: trunk/reactos/ntoskrnl/ps/job.c
Modified: trunk/reactos/ntoskrnl/ps/security.c
Modified: trunk/reactos/ntoskrnl/ps/suspend.c
Modified: trunk/reactos/ntoskrnl/rtl/capture.c
Modified: trunk/reactos/ntoskrnl/se/acl.c
Modified: trunk/reactos/ntoskrnl/se/sd.c
Modified: trunk/reactos/ntoskrnl/se/sid.c
Modified: trunk/reactos/ntoskrnl/se/token.c
_____
Modified: trunk/reactos/ntoskrnl/cm/ntfunc.c
--- trunk/reactos/ntoskrnl/cm/ntfunc.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/cm/ntfunc.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -1145,9 +1145,7 @@
{
_SEH_TRY
{
- ProbeForWrite(KeyHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(KeyHandle);
}
_SEH_HANDLE
{
_____
Modified: trunk/reactos/ntoskrnl/ex/event.c
--- trunk/reactos/ntoskrnl/ex/event.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ex/event.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -242,7 +242,7 @@
EventHandle, PreviousState);
/* Check buffer validity */
- if(PreviousState && PreviousMode == UserMode) {
+ if(PreviousState && PreviousMode != KernelMode) {
_SEH_TRY {
@@ -376,7 +376,7 @@
EventHandle, PreviousState);
/* Check buffer validity */
- if(PreviousState && PreviousMode == UserMode) {
+ if(PreviousState && PreviousMode != KernelMode) {
_SEH_TRY {
@@ -441,7 +441,7 @@
EventHandle, PreviousState);
/* Check buffer validity */
- if(PreviousState != NULL && PreviousMode == UserMode) {
+ if(PreviousState != NULL && PreviousMode != KernelMode) {
_SEH_TRY {
_____
Modified: trunk/reactos/ntoskrnl/ex/sysinfo.c
--- trunk/reactos/ntoskrnl/ex/sysinfo.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ex/sysinfo.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -1541,7 +1541,7 @@
_SEH_TRY
{
- if (PreviousMode == UserMode)
+ if (PreviousMode != KernelMode)
{
/* SystemKernelDebuggerInformation needs only BOOLEAN
alignment */
ProbeForWrite(SystemInformation, Length, 1);
_____
Modified: trunk/reactos/ntoskrnl/include/internal/ob.h
--- trunk/reactos/ntoskrnl/include/internal/ob.h 2005-08-21
17:38:07 UTC (rev 17466)
+++ trunk/reactos/ntoskrnl/include/internal/ob.h 2005-08-21
19:04:23 UTC (rev 17467)
@@ -261,7 +261,7 @@
#define ProbeQueryInfoBuffer(Buffer, BufferLen, Alignment, RetLen,
PrevMode, StatusVar) \
do {
\
- if(PrevMode == UserMode)
\
+ if(PrevMode != KernelMode)
\
{
\
_SEH_TRY
\
{
\
@@ -291,7 +291,7 @@
#define ProbeSetInfoBuffer(Buffer, BufferLen, Alignment, PrevMode,
StatusVar) \
do {
\
- if(PrevMode == UserMode)
\
+ if(PrevMode != KernelMode)
\
{
\
_SEH_TRY
\
{
\
_____
Modified: trunk/reactos/ntoskrnl/io/file.c
--- trunk/reactos/ntoskrnl/io/file.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/io/file.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -781,18 +781,13 @@
{
_SEH_TRY
{
- ProbeForWrite(FileHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(FileHandle);
ProbeForWrite(IoStatusBlock,
sizeof(IO_STATUS_BLOCK),
sizeof(ULONG));
if(AllocationSize != NULL)
{
- ProbeForRead(AllocationSize,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
- SafeAllocationSize = *AllocationSize;
+ SafeAllocationSize = ProbeForReadLargeInteger(AllocationSize);
}
else
SafeAllocationSize.QuadPart = 0;
@@ -1395,7 +1390,7 @@
LARGE_INTEGER Interval;
if ((ULONG_PTR)IoStatusBlock >= (ULONG_PTR)MmUserProbeAddress &&
- KeGetPreviousMode() == UserMode)
+ KeGetPreviousMode() != KernelMode)
return STATUS_ACCESS_VIOLATION;
Status = ObReferenceObjectByHandle(FileHandle, 0, IoFileObjectType,
_____
Modified: trunk/reactos/ntoskrnl/io/iocomp.c
--- trunk/reactos/ntoskrnl/io/iocomp.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/io/iocomp.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -237,9 +237,7 @@
_SEH_TRY {
- ProbeForWrite(IoCompletionHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(IoCompletionHandle);
} _SEH_HANDLE {
Status = _SEH_GetExceptionCode();
@@ -309,9 +307,7 @@
_SEH_TRY {
- ProbeForWrite(IoCompletionHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(IoCompletionHandle);
} _SEH_HANDLE {
Status = _SEH_GetExceptionCode();
@@ -432,21 +428,14 @@
_SEH_TRY {
- ProbeForWrite(CompletionKey,
- sizeof(PVOID),
- sizeof(ULONG));
- ProbeForWrite(CompletionContext,
- sizeof(PVOID),
- sizeof(ULONG));
+ ProbeForWritePointer(CompletionKey);
+ ProbeForWritePointer(CompletionContext);
ProbeForWrite(IoStatusBlock,
sizeof(IO_STATUS_BLOCK),
sizeof(ULONG));
if (Timeout != NULL) {
- ProbeForRead(Timeout,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
- SafeTimeout = *Timeout;
+ SafeTimeout = ProbeForReadLargeInteger(Timeout);
Timeout = &SafeTimeout;
}
} _SEH_HANDLE {
_____
Modified: trunk/reactos/ntoskrnl/io/plugplay.c
--- trunk/reactos/ntoskrnl/io/plugplay.c 2005-08-21 17:38:07 UTC
(rev 17466)
+++ trunk/reactos/ntoskrnl/io/plugplay.c 2005-08-21 19:04:23 UTC
(rev 17467)
@@ -173,7 +173,7 @@
DPRINT("NtGetPlugPlayEvent() called\n");
/* Function can only be called from user-mode */
- if (KeGetPreviousMode() != UserMode)
+ if (KeGetPreviousMode() == KernelMode)
{
DPRINT1("NtGetPlugPlayEvent cannot be called from kernel mode!\n");
return STATUS_ACCESS_DENIED;
@@ -636,7 +636,7 @@
PlugPlayControlClass, Buffer, BufferLength);
/* Function can only be called from user-mode */
- if (KeGetPreviousMode() != UserMode)
+ if (KeGetPreviousMode() == KernelMode)
{
DPRINT1("NtGetPlugPlayEvent cannot be called from kernel
mode!\n");
return STATUS_ACCESS_DENIED;
_____
Modified: trunk/reactos/ntoskrnl/kdbg/kdb.c
--- trunk/reactos/ntoskrnl/kdbg/kdb.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/kdbg/kdb.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -1206,7 +1206,7 @@
ul = min(ExpNr, RTL_NUMBER_OF(KdbEnterConditions) - 1);
EnterCondition = KdbEnterConditions[ul][FirstChance ? 0 : 1];
if (EnterCondition == KdbDoNotEnter ||
- (EnterCondition == KdbEnterFromUmode && PreviousMode !=
UserMode) ||
+ (EnterCondition == KdbEnterFromUmode && PreviousMode ==
KernelMode) ||
(EnterCondition == KdbEnterFromKmode && PreviousMode !=
KernelMode))
{
EnterConditionMet = FALSE;
_____
Modified: trunk/reactos/ntoskrnl/ke/apc.c
--- trunk/reactos/ntoskrnl/ke/apc.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ke/apc.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -360,7 +360,7 @@
}
} else if ((Thread->State == Waiting) &&
- (Thread->WaitMode == UserMode) &&
+ (Thread->WaitMode != KernelMode) &&
(Thread->Alertable)) {
DPRINT("Waking up Thread for User-Mode APC Delivery \n");
@@ -703,7 +703,7 @@
/* Now we do the User APCs */
if ((!IsListEmpty(&Thread->ApcState.ApcListHead[UserMode])) &&
- (DeliveryMode == UserMode) && (Thread->ApcState.UserApcPending
== TRUE)) {
+ (DeliveryMode != KernelMode) &&
(Thread->ApcState.UserApcPending == TRUE)) {
/* It's not pending anymore */
Thread->ApcState.UserApcPending = FALSE;
_____
Modified: trunk/reactos/ntoskrnl/ke/catch.c
--- trunk/reactos/ntoskrnl/ke/catch.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ke/catch.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -63,7 +63,7 @@
TContext.ContextFlags = CONTEXT_FULL;
/* Check the mode */
- if (PreviousMode == UserMode)
+ if (PreviousMode != KernelMode)
{
/* Add Debugger Registers if this is User Mode */
TContext.ContextFlags = TContext.ContextFlags |
CONTEXT_DEBUGGER;
@@ -91,7 +91,7 @@
if (Action != kdDoNotHandleException)
{
/* See what kind of Exception this is */
- if (PreviousMode == UserMode)
+ if (PreviousMode != KernelMode)
{
/* User mode exception, search the frames if we have to */
if (SearchFrames)
_____
Modified: trunk/reactos/ntoskrnl/ke/i386/fpu.c
--- trunk/reactos/ntoskrnl/ke/i386/fpu.c 2005-08-21 17:38:07 UTC
(rev 17466)
+++ trunk/reactos/ntoskrnl/ke/i386/fpu.c 2005-08-21 19:04:23 UTC
(rev 17467)
@@ -498,7 +498,7 @@
PreviousMode = ((Tf->Cs & 0xffff) == USER_CS) ? (UserMode) :
(KernelMode);
DPRINT("Math/Xmm fault happened! (PreviousMode = %s)\n",
- (PreviousMode == UserMode) ? ("UserMode") :
("KernelMode"));
+ (PreviousMode != KernelMode) ? ("UserMode") :
("KernelMode"));
ASSERT(NpxThread == CurrentThread); /* FIXME: Is not always true
I think */
_____
Modified: trunk/reactos/ntoskrnl/ke/kthread.c
--- trunk/reactos/ntoskrnl/ke/kthread.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ke/kthread.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -1435,7 +1435,7 @@
Thread->Alerted[AlertMode] = FALSE;
- } else if ((AlertMode == UserMode) &&
(!IsListEmpty(&Thread->ApcState.ApcListHead[UserMode]))) {
+ } else if ((AlertMode != KernelMode) &&
(!IsListEmpty(&Thread->ApcState.ApcListHead[UserMode]))) {
/* If the mode is User and the Queue isn't empty, set Pending
*/
Thread->ApcState.UserApcPending = TRUE;
@@ -1480,9 +1480,7 @@
_SEH_TRY {
- ProbeForWrite(SuspendCount,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteUlong(SuspendCount);
} _SEH_HANDLE {
@@ -1578,26 +1576,30 @@
/* Check if parameters are valid */
if(PreviousMode != KernelMode) {
+ Status = STATUS_SUCCESS;
+
_SEH_TRY {
- ProbeForRead(DelayInterval,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
-
/* make a copy on the kernel stack and let DelayInterval
point to it so
we don't need to wrap KeDelayExecutionThread in SEH! */
- SafeInterval = *DelayInterval;
+ SafeInterval = ProbeForReadLargeInteger(DelayInterval);
+ DelayInterval = &SafeInterval;
} _SEH_HANDLE {
Status = _SEH_GetExceptionCode();
} _SEH_END;
+
+ if (!NT_SUCCESS(Status))
+ {
+ return Status;
+ }
}
/* Call the Kernel Function */
Status = KeDelayExecutionThread(PreviousMode,
Alertable,
- &SafeInterval);
+ DelayInterval);
/* Return Status */
return Status;
_____
Modified: trunk/reactos/ntoskrnl/ke/queue.c
--- trunk/reactos/ntoskrnl/ke/queue.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ke/queue.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -223,7 +223,7 @@
Thread->WaitBlockList = &Thread->WaitBlock[0];
/* Fail if there's an APC Pending */
- if (WaitMode == UserMode &&
Thread->ApcState.UserApcPending) {
+ if (WaitMode != KernelMode &&
Thread->ApcState.UserApcPending) {
/* Return the status and increase the pending threads
*/
ListEntry = (PLIST_ENTRY)STATUS_USER_APC;
_____
Modified: trunk/reactos/ntoskrnl/ke/wait.c
--- trunk/reactos/ntoskrnl/ke/wait.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ke/wait.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -47,7 +47,7 @@
/* If there are User APCs Pending, then we can't really be
alertable */
} else if
((!IsListEmpty(&CurrentThread->ApcState.ApcListHead[UserMode])) &&
- (WaitMode == UserMode)) {
+ (WaitMode != KernelMode)) {
DPRINT("APCs are Pending\n");
CurrentThread->ApcState.UserApcPending = TRUE;
@@ -55,7 +55,7 @@
}
/* If there are User APCs Pending and we are waiting in usermode,
then we must notify the caller */
- } else if ((CurrentThread->ApcState.UserApcPending) && (WaitMode ==
UserMode)) {
+ } else if ((CurrentThread->ApcState.UserApcPending) && (WaitMode !=
KernelMode)) {
DPRINT("APCs are Pending\n");
*Status = STATUS_USER_APC;
}
_____
Modified: trunk/reactos/ntoskrnl/lpc/connect.c
--- trunk/reactos/ntoskrnl/lpc/connect.c 2005-08-21 17:38:07 UTC
(rev 17466)
+++ trunk/reactos/ntoskrnl/lpc/connect.c 2005-08-21 19:04:23 UTC
(rev 17467)
@@ -265,14 +265,10 @@
{
_SEH_TRY
{
- ProbeForWrite(UnsafeConnectedPortHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(UnsafeConnectedPortHandle);
if (UnsafeMaximumMessageSize != NULL)
{
- ProbeForWrite(UnsafeMaximumMessageSize,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWriteUlong(UnsafeMaximumMessageSize);
}
}
_SEH_HANDLE
@@ -341,10 +337,7 @@
{
_SEH_TRY
{
- ProbeForRead(UnsafeConnectDataLength,
- sizeof(ULONG),
- 1);
- ConnectDataLength = *UnsafeConnectDataLength;
+ ConnectDataLength =
ProbeForReadUlong(UnsafeConnectDataLength);
}
_SEH_HANDLE
{
@@ -374,9 +367,7 @@
{
_SEH_TRY
{
- ProbeForWrite(UnsafeConnectData,
- ConnectDataLength,
- 1);
+ ProbeForWriteUlong(UnsafeConnectData);
RtlCopyMemory(ConnectData,
UnsafeConnectData,
ConnectDataLength);
_____
Modified: trunk/reactos/ntoskrnl/mm/mdl.c
--- trunk/reactos/ntoskrnl/mm/mdl.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/mm/mdl.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -778,7 +778,7 @@
/* Calculate the number of pages required. */
PageCount = PAGE_ROUND_UP(Mdl->ByteCount + Mdl->ByteOffset) /
PAGE_SIZE;
- if (AccessMode == UserMode)
+ if (AccessMode != KernelMode)
{
MEMORY_AREA *Result;
LARGE_INTEGER BoundaryAddressMultiple;
@@ -885,7 +885,7 @@
{
return NULL;
}
- if (AccessMode == UserMode)
+ if (AccessMode != KernelMode)
{
/* Throw exception */
ExRaiseStatus(STATUS_ACCESS_VIOLATION);
_____
Modified: trunk/reactos/ntoskrnl/mm/pagefile.c
--- trunk/reactos/ntoskrnl/mm/pagefile.c 2005-08-21 17:38:07 UTC
(rev 17466)
+++ trunk/reactos/ntoskrnl/mm/pagefile.c 2005-08-21 19:04:23 UTC
(rev 17467)
@@ -801,18 +801,12 @@
{
return(Status);
}
- if (PreviousMode == UserMode)
+ if (PreviousMode != KernelMode)
{
_SEH_TRY
{
- ProbeForRead(InitialSize,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
- SafeInitialSize = *InitialSize;
- ProbeForRead(MaximumSize,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
- SafeMaximumSize = *MaximumSize;
+ SafeInitialSize = ProbeForReadLargeInteger(InitialSize);
+ SafeMaximumSize = ProbeForReadLargeInteger(MaximumSize);
}
_SEH_HANDLE
{
_____
Modified: trunk/reactos/ntoskrnl/mm/section.c
--- trunk/reactos/ntoskrnl/mm/section.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/mm/section.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -3317,11 +3317,8 @@
{
_SEH_TRY
{
- ProbeForRead(MaximumSize,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
/* make a copy on the stack */
- SafeMaximumSize = *MaximumSize;
+ SafeMaximumSize = ProbeForReadLargeInteger(MaximumSize);
MaximumSize = &SafeMaximumSize;
}
_SEH_HANDLE
@@ -3401,9 +3398,7 @@
{
_SEH_TRY
{
- ProbeForWrite(SectionHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(SectionHandle);
}
_SEH_HANDLE
{
@@ -3573,21 +3568,15 @@
{
if(BaseAddress != NULL)
{
- ProbeForWrite(BaseAddress,
- sizeof(PVOID),
- sizeof(ULONG));
+ ProbeForWritePointer(BaseAddress);
SafeBaseAddress = *BaseAddress;
}
if(SectionOffset != NULL)
{
- ProbeForWrite(SectionOffset,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
+ ProbeForWriteLargeInteger(SectionOffset);
SafeSectionOffset = *SectionOffset;
}
- ProbeForWrite(ViewSize,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWriteUlong(ViewSize);
SafeViewSize = *ViewSize;
}
_SEH_HANDLE
@@ -4133,11 +4122,8 @@
{
_SEH_TRY
{
- ProbeForRead(NewMaximumSize,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
/* make a copy on the stack */
- SafeNewMaximumSize = *NewMaximumSize;
+ SafeNewMaximumSize = ProbeForReadLargeInteger(NewMaximumSize);
NewMaximumSize = &SafeNewMaximumSize;
}
_SEH_HANDLE
_____
Modified: trunk/reactos/ntoskrnl/mm/virtual.c
--- trunk/reactos/ntoskrnl/mm/virtual.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/mm/virtual.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -303,9 +303,7 @@
{
_SEH_TRY
{
- ProbeForWrite(UnsafeResultLength,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWriteUlong(UnsafeResultLength);
}
_SEH_HANDLE
{
@@ -458,15 +456,9 @@
{
_SEH_TRY
{
- ProbeForWrite(UnsafeBaseAddress,
- sizeof(PVOID),
- sizeof(ULONG));
- ProbeForWrite(UnsafeBaseAddress,
- sizeof(ULONG),
- sizeof(ULONG));
- ProbeForWrite(UnsafeOldAccessProtection,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWritePointer(UnsafeBaseAddress);
+ ProbeForWriteUlong(UnsafeNumberOfBytesToProtect);
+ ProbeForWriteUlong(UnsafeOldAccessProtection);
BaseAddress = *UnsafeBaseAddress;
NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
@@ -573,9 +565,7 @@
1);
if(NumberOfBytesRead != NULL)
{
- ProbeForWrite(NumberOfBytesRead,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWriteUlong(NumberOfBytesRead);
}
}
_SEH_HANDLE
@@ -776,9 +766,7 @@
{
_SEH_TRY
{
- ProbeForWrite(NumberOfBytesWritten,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWriteUlong(NumberOfBytesWritten);
}
_SEH_HANDLE
{
_____
Modified: trunk/reactos/ntoskrnl/ob/dirobj.c
--- trunk/reactos/ntoskrnl/ob/dirobj.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ob/dirobj.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -58,9 +58,7 @@
{
_SEH_TRY
{
- ProbeForWrite(DirectoryHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(DirectoryHandle);
}
_SEH_HANDLE
{
@@ -186,18 +184,14 @@
ProbeForWrite(Buffer,
BufferLength,
sizeof(WCHAR));
- ProbeForWrite(Context,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWriteUlong(Context);
if(!RestartScan)
{
SkipEntries = *Context;
}
if(ReturnLength != NULL)
{
- ProbeForWrite(ReturnLength,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWriteUlong(ReturnLength);
}
}
_SEH_HANDLE
@@ -449,9 +443,7 @@
{
_SEH_TRY
{
- ProbeForWrite(DirectoryHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(DirectoryHandle);
}
_SEH_HANDLE
{
_____
Modified: trunk/reactos/ntoskrnl/ob/handle.c
--- trunk/reactos/ntoskrnl/ob/handle.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ob/handle.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -388,9 +388,7 @@
{
_SEH_TRY
{
- ProbeForWrite(TargetHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(TargetHandle);
}
_SEH_HANDLE
{
_____
Modified: trunk/reactos/ntoskrnl/ob/symlink.c
--- trunk/reactos/ntoskrnl/ob/symlink.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ob/symlink.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -186,9 +186,7 @@
{
_SEH_TRY
{
- ProbeForWrite(LinkHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(LinkHandle);
}
_SEH_HANDLE
{
@@ -303,9 +301,7 @@
{
_SEH_TRY
{
- ProbeForWrite(LinkHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(LinkHandle);
}
_SEH_HANDLE
{
@@ -388,9 +384,7 @@
if(ResultLength != NULL)
{
- ProbeForWrite(ResultLength,
- sizeof(ULONG),
- sizeof(ULONG));
+ ProbeForWriteUlong(ResultLength);
}
}
_SEH_HANDLE
_____
Modified: trunk/reactos/ntoskrnl/ob/wait.c
--- trunk/reactos/ntoskrnl/ob/wait.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ob/wait.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -75,12 +75,8 @@
if(TimeOut)
{
- ProbeForRead(TimeOut,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
-
/* Make a local copy of the timeout on the stack */
- SafeTimeOut = *TimeOut;
+ SafeTimeOut = ProbeForReadLargeInteger(TimeOut);
TimeOut = &SafeTimeOut;
}
}
@@ -273,11 +269,8 @@
{
_SEH_TRY
{
- ProbeForRead(TimeOut,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
/* Make a copy on the stack */
- SafeTimeOut = *TimeOut;
+ SafeTimeOut = ProbeForReadLargeInteger(TimeOut);
TimeOut = &SafeTimeOut;
}
_SEH_HANDLE
@@ -354,11 +347,8 @@
{
_SEH_TRY
{
- ProbeForRead(TimeOut,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
/* Make a copy on the stack */
- SafeTimeOut = *TimeOut;
+ SafeTimeOut = ProbeForReadLargeInteger(TimeOut);
TimeOut = &SafeTimeOut;
}
_SEH_HANDLE
_____
Modified: trunk/reactos/ntoskrnl/ps/job.c
--- trunk/reactos/ntoskrnl/ps/job.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ps/job.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -212,7 +212,7 @@
CurrentProcess = PsGetCurrentProcess();
/* check for valid buffers */
- if(PreviousMode == UserMode)
+ if(PreviousMode != KernelMode)
{
_SEH_TRY
{
@@ -382,7 +382,7 @@
PreviousMode = ExGetPreviousMode();
/* check for valid buffers */
- if(PreviousMode == UserMode)
+ if(PreviousMode != KernelMode)
{
_SEH_TRY
{
_____
Modified: trunk/reactos/ntoskrnl/ps/security.c
--- trunk/reactos/ntoskrnl/ps/security.c 2005-08-21 17:38:07 UTC
(rev 17466)
+++ trunk/reactos/ntoskrnl/ps/security.c 2005-08-21 19:04:23 UTC
(rev 17467)
@@ -75,7 +75,7 @@
PreviousMode = ExGetPreviousMode();
- if(PreviousMode == UserMode)
+ if(PreviousMode != KernelMode)
{
_SEH_TRY
{
_____
Modified: trunk/reactos/ntoskrnl/ps/suspend.c
--- trunk/reactos/ntoskrnl/ps/suspend.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/ps/suspend.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -45,7 +45,7 @@
ThreadHandle, SuspendCount);
/* Check buffer validity */
- if(SuspendCount && PreviousMode == UserMode) {
+ if(SuspendCount && PreviousMode != KernelMode) {
_SEH_TRY {
_____
Modified: trunk/reactos/ntoskrnl/rtl/capture.c
--- trunk/reactos/ntoskrnl/rtl/capture.c 2005-08-21 17:38:07 UTC
(rev 17466)
+++ trunk/reactos/ntoskrnl/rtl/capture.c 2005-08-21 19:04:23 UTC
(rev 17467)
@@ -32,7 +32,7 @@
* Copy the source string structure to kernel space.
*/
- if(CurrentMode == UserMode)
+ if(CurrentMode != KernelMode)
{
RtlZeroMemory(&Src, sizeof(Src));
_____
Modified: trunk/reactos/ntoskrnl/se/acl.c
--- trunk/reactos/ntoskrnl/se/acl.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/se/acl.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -354,7 +354,7 @@
PAGED_CODE();
if(CapturedAcl != NULL &&
- (AccessMode == UserMode ||
+ (AccessMode != KernelMode ||
(AccessMode == KernelMode && CaptureIfKernel)))
{
ExFreePool(CapturedAcl);
_____
Modified: trunk/reactos/ntoskrnl/se/sd.c
--- trunk/reactos/ntoskrnl/se/sd.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/se/sd.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -338,7 +338,7 @@
PAGED_CODE();
if(CapturedSecurityQualityOfService != NULL &&
- (AccessMode == UserMode ||
+ (AccessMode != KernelMode ||
(AccessMode == KernelMode && CaptureIfKernel)))
{
ExFreePool(CapturedSecurityQualityOfService);
@@ -819,7 +819,7 @@
and CaptureIfKernelMode that you previously passed to
SeCaptureSecurityDescriptor() in order to avoid memory
leaks! */
if(CapturedSecurityDescriptor != NULL &&
- (CurrentMode == UserMode ||
+ (CurrentMode != KernelMode ||
(CurrentMode == KernelMode && CaptureIfKernelMode)))
{
/* only delete the descriptor when SeCaptureSecurityDescriptor()
allocated one! */
_____
Modified: trunk/reactos/ntoskrnl/se/sid.c
--- trunk/reactos/ntoskrnl/se/sid.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/se/sid.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -316,7 +316,7 @@
PAGED_CODE();
if(CapturedSid != NULL &&
- (AccessMode == UserMode ||
+ (AccessMode != KernelMode ||
(AccessMode == KernelMode && CaptureIfKernel)))
{
ExFreePool(CapturedSid);
_____
Modified: trunk/reactos/ntoskrnl/se/token.c
--- trunk/reactos/ntoskrnl/se/token.c 2005-08-21 17:38:07 UTC (rev
17466)
+++ trunk/reactos/ntoskrnl/se/token.c 2005-08-21 19:04:23 UTC (rev
17467)
@@ -1440,9 +1440,7 @@
{
_SEH_TRY
{
- ProbeForWrite(NewTokenHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(NewTokenHandle);
}
_SEH_HANDLE
{
@@ -2053,6 +2051,7 @@
ULONG uLength;
ULONG i;
ULONG nTokenPrivileges = 0;
+ LARGE_INTEGER LocalExpirationTime = {};
KPROCESSOR_MODE PreviousMode;
NTSTATUS Status = STATUS_SUCCESS;
@@ -2064,15 +2063,11 @@
{
_SEH_TRY
{
- ProbeForWrite(TokenHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(TokenHandle);
ProbeForRead(AuthenticationId,
sizeof(LUID),
sizeof(ULONG));
- ProbeForRead(ExpirationTime,
- sizeof(LARGE_INTEGER),
- sizeof(ULONG));
+ LocalExpirationTime = ProbeForReadLargeInteger(ExpirationTime);
ProbeForRead(TokenUser,
sizeof(TOKEN_USER),
sizeof(ULONG));
@@ -2110,6 +2105,7 @@
else
{
nTokenPrivileges = TokenPrivileges->PrivilegeCount;
+ LocalExpirationTime = *ExpirationTime;
}
Status = ZwAllocateLocallyUniqueId(&TokenId);
@@ -2383,9 +2379,7 @@
{
_SEH_TRY
{
- ProbeForWrite(TokenHandle,
- sizeof(HANDLE),
- sizeof(ULONG));
+ ProbeForWriteHandle(TokenHandle);
}
_SEH_HANDLE
{