Fixed ProbeForRead* macros: make sure the data always is read while probing it Modified: trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h _____
Modified: trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h --- trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h 2005-10-27 23:31:14 UTC (rev 18816) +++ trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h 2005-10-27 23:48:22 UTC (rev 18817) @@ -134,7 +134,6 @@
else { /* sanitize structure */ - Dest->Length = 0; Dest->MaximumLength = 0; Dest->Buffer = NULL; } @@ -209,7 +208,7 @@ (((ULONG_PTR)(Ptr) + sizeof(Type) - 1 < (ULONG_PTR)(Ptr) || \ (ULONG_PTR)(Ptr) + sizeof(Type) - 1 >= (ULONG_PTR)MmUserProbeAddress) ? \ ExRaiseStatus (STATUS_ACCESS_VIOLATION), Default : \ - *(Type *)(Ptr)) + *(volatile Type *)(Ptr))
#define ProbeForReadBoolean(Ptr) ProbeForReadGenericType(Ptr, BOOLEAN, FALSE) #define ProbeForReadUchar(Ptr) ProbeForReadGenericType(Ptr, UCHAR, 0)