[Bug 12783] Allocation of PEB and TEB can overlap dll mappings
wine-bugs at winehq.org
wine-bugs at winehq.org
Tue Jun 10 17:28:47 CDT 2008
http://bugs.winehq.org/show_bug.cgi?id=12783
--- Comment #9 from Albert Lee <trisk+winehq at acm.jhu.edu> 2008-06-10 17:28:46 ---
(In reply to comment #8)
> (In reply to comment #7)
> > The particular case
> > addr = (void *)0x7ffe0000;
> > size = 0x10000;
> > NtAllocateVirtualMemory( NtCurrentProcess(), &addr, 0, &size,
> > MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE );
> > user_shared_data = addr;
> > probably should have some way to say MAP_FIXED, but I cannot find such a way.
> > [Hint: valgrind presents such a kernel that ignores the first argument to
> > mmap() unless MAP_FIXED.]
> >
>
>
> There is no reason to check for this particular allocation unless to die
> immediately if it fails. It's the special data structure [Shared User Data]
> present on all NT+ windows at the constant address. If your kernel can not
> honor this, then it's broken and have to be fixed. Or listed as incompatible
> with Wine. This area is critical to most copy-protection systems. Also lots of
> programs make a use of this data structure.
>
The semantics of mmap are well-defined and require applications to not assume
the segment has been mapped at the requested address unless MAP_FIXED is set.
For MEM_RESERVE allocations map_view in ntdll is called, if it's in a
"reserved" area mmap is called with MAP_FIXED, otherwise with 0. map_view
always returns an error if the returned address is not the same as the
requested one.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list