diff --git a/reactos/ntoskrnl/mm/anonmem.c b/reactos/ntoskrnl/mm/anonmem.c index 75888e2e001..184d2f49ddd 100644 --- a/reactos/ntoskrnl/mm/anonmem.c +++ b/reactos/ntoskrnl/mm/anonmem.c @@ -569,7 +569,7 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, Protect); /* Check for valid protection flags */ - if ((Protect & PAGE_FLAGS_VALID_FROM_USER_MODE) != Protect) + if ((!Protect & PAGE_FLAGS_VALID_FROM_USER_MODE)) { DPRINT1("Invalid page protection\n"); return STATUS_INVALID_PAGE_PROTECTION; @@ -944,6 +944,12 @@ NtFreeVirtualMemory(IN HANDLE ProcessHandle, "*PRegionSize %x, FreeType %x)\n",ProcessHandle,*PBaseAddress, *PRegionSize,FreeType); + if (!(FreeType & (MEM_RELEASE | MEM_DECOMMIT))) + { + DPRINT1("Invalid FreeType\n"); + return STATUS_INVALID_PARAMETER_4; + } + BaseAddress = (PVOID)PAGE_ROUND_DOWN((*PBaseAddress)); RegionSize = PAGE_ROUND_UP((ULONG_PTR)(*PBaseAddress) + (*PRegionSize)) - PAGE_ROUND_DOWN((*PBaseAddress));