Mm: Fix page protection flags checks.

svn path=/trunk/; revision=39054
This commit is contained in:
Timo Kreuzer 2009-01-24 00:54:02 +00:00
parent 16c99f33f3
commit f7b0b2a29e
3 changed files with 12 additions and 5 deletions

View file

@ -140,6 +140,16 @@ typedef ULONG PFN_TYPE, *PPFN_TYPE;
PAGE_NOACCESS | \
PAGE_NOCACHE)
#define PAGE_FLAGS_VALID_FOR_SECTION \
(PAGE_READONLY | \
PAGE_READWRITE | \
PAGE_WRITECOPY | \
PAGE_EXECUTE | \
PAGE_EXECUTE_READ | \
PAGE_EXECUTE_READWRITE | \
PAGE_EXECUTE_WRITECOPY | \
PAGE_NOACCESS)
#define PAGE_IS_READABLE \
(PAGE_READONLY | \
PAGE_READWRITE | \

View file

@ -569,7 +569,7 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle,
Protect);
/* Check for valid protection flags */
if (!(Protect & PAGE_FLAGS_VALID_FROM_USER_MODE))
if (!Protect || Protect & ~PAGE_FLAGS_VALID_FROM_USER_MODE)
{
DPRINT1("Invalid page protection\n");
return STATUS_INVALID_PAGE_PROTECTION;

View file

@ -4538,10 +4538,7 @@ MmMapViewOfSection(IN PVOID SectionObject,
ASSERT(Process);
if (!(Protect & (PAGE_READONLY | PAGE_READWRITE |
PAGE_WRITECOPY | PAGE_EXECUTE |
PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE |
PAGE_EXECUTE_WRITECOPY | PAGE_NOACCESS)))
if (!Protect || Protect & ~PAGE_FLAGS_VALID_FOR_SECTION)
{
return STATUS_INVALID_PAGE_PROTECTION;
}