Relax restriction on the segment in NtSetLdtEntries(). Look into diff for details. Thanks to Myria for providing information.

There were no reasons found which can proof that this change could lead to security issues.

svn path=/trunk/; revision=23509
This commit is contained in:
Aleksey Bragin 2006-08-06 22:02:02 +00:00
parent 4a57b7984a
commit f792bc36a0

View file

@ -58,8 +58,20 @@ BOOL PspIsDescriptorValid(PLDT_ENTRY ldt_entry)
SegLimit=(SegLimit << 12) | 0xfff;
}
return ((Base + SegLimit > (ULONG) MmHighestUserAddress) ||
(Base > Base+SegLimit) ? FALSE : TRUE);
if ((Base + SegLimit > (ULONG_PTR) MmHighestUserAddress) ||
(Base > Base+SegLimit))
{
DPRINT1("WARNING: Windows would mark this descriptor invalid!");
}
/*
Certain "DOS32" programs expect to be able to create DPMI selectors
that wrap the address space. Windows NT does not allow user-created
selectors to reach into kernel memory. However, there is no security
risk in allowing it; the page table will prevent access anyway.
*/
return (/*(Base + SegLimit > (ULONG_PTR) MmHighestUserAddress) ||
(Base > Base+SegLimit) ? FALSE : TRUE*/ TRUE);
}
NTSTATUS STDCALL