|
@@ -856,7 +856,13 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
|
|
* default mmap base, as well as whatever program they
|
|
|
* might try to exec. This is because the brk will
|
|
|
* follow the loader, and is not movable. */
|
|
|
- load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
|
|
|
+ if (current->flags & PF_RANDOMIZE)
|
|
|
+ load_bias = randomize_range(0x10000,
|
|
|
+ ELF_ET_DYN_BASE,
|
|
|
+ 0);
|
|
|
+ else
|
|
|
+ load_bias = ELF_ET_DYN_BASE;
|
|
|
+ load_bias = ELF_PAGESTART(load_bias - vaddr);
|
|
|
}
|
|
|
|
|
|
error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
|