Hi,
Please also revert the call to ExRaiseAccessViolation. The behaviour is
semi-documented here:
There's a small but potentially important difference, which is the value
of the faulting address.
Thanks,
Timo
Am 23.03.2011 16:49, schrieb rharabien(a)svn.reactos.org:
Author: rharabien
Date: Wed Mar 23 15:49:44 2011
New Revision: 51126
URL:
http://svn.reactos.org/svn/reactos?rev=51126&view=rev
Log:
[NTOSKRNL]
Revert r51108. ProbeForRead doesn't check if memory is readable.
Improve comments and replace trick raising exception with call to
ExRaiseAccessViolation.
[WIN32K]
Remove ASSERTs in IntSetSysColors: this function is only called in NtUserSetSysColors in
SEH block. It shouldn't crash for NULL pointers.
Modified:
trunk/reactos/ntoskrnl/ex/exintrin.c
trunk/reactos/subsystems/win32/win32k/objects/stockobj.c
Modified: trunk/reactos/ntoskrnl/ex/exintrin.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/exintrin.c?rev…
==============================================================================
--- trunk/reactos/ntoskrnl/ex/exintrin.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ex/exintrin.c [iso-8859-1] Wed Mar 23 15:49:44 2011
@@ -104,7 +104,6 @@
IN ULONG Alignment)
{
ULONG_PTR Last, Current = (ULONG_PTR)Address;
- CHAR Temp;
PAGED_CODE();
/* Only probe if we have a valid length */
@@ -132,16 +131,7 @@
ExRaiseAccessViolation();
}
- /* Round down to the last page */
- Last = PAGE_ROUND_DOWN(Last) + PAGE_SIZE;
- do
- {
- /* Attempt a read */
- Temp = *(volatile CHAR*)Current;
-
- /* Go to the next address */
- Current = PAGE_ROUND_DOWN(Current) + PAGE_SIZE;
- } while (Current != Last);
+ /* ProbeForRead doesn't check if memory pages are readable! */
}
}
Modified: trunk/reactos/subsystems/win32/win32k/objects/stockobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/stockobj.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/stockobj.c [iso-8859-1] Wed Mar 23
15:49:44 2011
@@ -221,9 +221,6 @@
{
UINT i;
- ASSERT(Elements);
- ASSERT(Colors);
-
for (i = 0; i< nColors; i++)
{
if ((UINT)(*Elements)< NUM_SYSCOLORS)