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