[ros-diffs] [dchapyshev] 41015: - Add check of params for NtGetWriteWatch/NtResetWriteWatch (from Wine) - Set Granularity to PAGE_SIZE Fixes crash in kernel32 virtual test

dchapyshev at svn.reactos.org dchapyshev at svn.reactos.org
Wed May 20 13:08:09 CEST 2009


Author: dchapyshev
Date: Wed May 20 15:08:08 2009
New Revision: 41015

URL: http://svn.reactos.org/svn/reactos?rev=41015&view=rev
Log:
- Add check of params for NtGetWriteWatch/NtResetWriteWatch (from Wine)
- Set Granularity to PAGE_SIZE
Fixes crash in kernel32 virtual test

Modified:
    trunk/reactos/ntoskrnl/mm/mm.c

Modified: trunk/reactos/ntoskrnl/mm/mm.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/mm.c?rev=41015&r1=41014&r2=41015&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/mm.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/mm.c [iso-8859-1] Wed May 20 15:08:08 2009
@@ -434,6 +434,9 @@
    return (FALSE);
 }
 
+/*
+ * @unimplemented
+ */
 NTSTATUS
 NTAPI
 NtGetWriteWatch(IN HANDLE ProcessHandle,
@@ -444,16 +447,42 @@
                 OUT PULONG EntriesInUserAddressArray,
                 OUT PULONG Granularity)
 {
+    if (!EntriesInUserAddressArray || !Granularity)
+    {
+        return STATUS_ACCESS_VIOLATION;
+    }
+
+    if (!*EntriesInUserAddressArray || !RegionSize)
+    {
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    if (!UserAddressArray)
+    {
+        return STATUS_ACCESS_VIOLATION;
+    }
+
+    /* HACK: Set granularity to PAGE_SIZE */
+    *Granularity = PAGE_SIZE;
+
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
+/*
+ * @unimplemented
+ */
 NTSTATUS
 NTAPI
 NtResetWriteWatch(IN HANDLE ProcessHandle,
                  IN PVOID BaseAddress,
                  IN ULONG RegionSize)
 {
+    if (!RegionSize)
+    {
+        return STATUS_INVALID_PARAMETER;
+    }
+
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }



More information about the Ros-diffs mailing list