From: Alfred Agrell floating@muncher.se
--- loader/preloader.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/loader/preloader.c b/loader/preloader.c index d0551bae63a..274849e9f4f 100644 --- a/loader/preloader.c +++ b/loader/preloader.c @@ -1442,6 +1442,14 @@ void* wld_start( void **stack ) remove_preload_range( i ); i--; } + else if ((char*)wld_start >= (char *)preload_info[i].addr && + (char *)wld_start <= (char *)preload_info[i].addr + preload_info[i].size) + { + wld_printf( "preloader: Warning: we got loaded into reserved range %p-%p, ignoring reservation\n", + preload_info[i].addr, (char *)preload_info[i].addr + preload_info[i].size ); + remove_preload_range( i ); + i--; + } else if (wld_mmap( preload_info[i].addr, preload_info[i].size, PROT_NONE, MAP_FIXED | MAP_PRIVATE | MAP_ANON | MAP_NORESERVE, -1, 0 ) == (void *)-1) {