[ros-diffs] [cwittich] 38932: don't let VirtualProtect play with not committed memory

cwittich at svn.reactos.org cwittich at svn.reactos.org
Mon Jan 19 11:27:59 CET 2009


Author: cwittich
Date: Mon Jan 19 04:27:59 2009
New Revision: 38932

URL: http://svn.reactos.org/svn/reactos?rev=38932&view=rev
Log:
don't let VirtualProtect play with not committed memory

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

Modified: trunk/reactos/ntoskrnl/mm/anonmem.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/anonmem.c?rev=38932&r1=38931&r2=38932&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/anonmem.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/anonmem.c [iso-8859-1] Mon Jan 19 04:27:59 2009
@@ -1028,11 +1028,20 @@
    Region = MmFindRegion(MemoryArea->StartingAddress,
                          &MemoryArea->Data.VirtualMemoryData.RegionListHead,
                          BaseAddress, NULL);
-   *OldProtect = Region->Protect;
-   Status = MmAlterRegion(AddressSpace, MemoryArea->StartingAddress,
-                          &MemoryArea->Data.VirtualMemoryData.RegionListHead,
-                          BaseAddress, Length, Region->Type, Protect,
-                          MmModifyAttributes);
+   if (Region->Type == MEM_COMMIT)
+   {
+       /* FIXME: check if the whole range is committed 
+        * before altering the memory */
+       *OldProtect = Region->Protect;
+       Status = MmAlterRegion(AddressSpace, MemoryArea->StartingAddress,
+                              &MemoryArea->Data.VirtualMemoryData.RegionListHead,
+                              BaseAddress, Length, Region->Type, Protect,
+                              MmModifyAttributes);
+   }
+   else
+   {
+       Status = STATUS_NOT_COMMITTED;
+   }
    return(Status);
 }
 



More information about the Ros-diffs mailing list