linux-user: mmap: add check if requested memory area fits target address space
Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> Acked-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5958 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
fb1c2cd7d9
commit
45bc1f5264
@ -382,6 +382,16 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
|
||||
end = start + len;
|
||||
real_end = HOST_PAGE_ALIGN(end);
|
||||
|
||||
/*
|
||||
* Test if requested memory area fits target address space
|
||||
* It can fail only on 64-bit host with 32-bit target.
|
||||
* On any other target/host host mmap() handles this error correctly.
|
||||
*/
|
||||
if ((unsigned long)start + len - 1 > (abi_ulong) -1) {
|
||||
errno = EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
for(addr = real_start; addr < real_end; addr += TARGET_PAGE_SIZE) {
|
||||
flg = page_get_flags(addr);
|
||||
if (flg & PAGE_RESERVED) {
|
||||
|
Loading…
Reference in New Issue
Block a user