don't let VirtualProtect play with not committed memory

svn path=/trunk/; revision=38932
This commit is contained in:
Christoph von Wittich 2009-01-19 10:27:59 +00:00
parent 2eb7079e6c
commit 23ef53ceff

View file

@ -1028,11 +1028,20 @@ MmProtectAnonMem(PMM_AVL_TABLE AddressSpace,
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);
}