[S390] Randomize PIEs
Randomize ELF_ET_DYN_BASE, which is used when loading position independent executables. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
committed by
Martin Schwidefsky
parent
3351918282
commit
d2c9dfccbc
@@ -161,7 +161,9 @@ extern unsigned int vdso_enabled;
|
|||||||
use of this is to invoke "./ld.so someprog" to test out a new version of
|
use of this is to invoke "./ld.so someprog" to test out a new version of
|
||||||
the loader. We need to make sure that it is out of the way of the program
|
the loader. We need to make sure that it is out of the way of the program
|
||||||
that it will "exec", and that there is sufficient room for the brk. */
|
that it will "exec", and that there is sufficient room for the brk. */
|
||||||
#define ELF_ET_DYN_BASE (STACK_TOP / 3 * 2)
|
|
||||||
|
extern unsigned long randomize_et_dyn(unsigned long base);
|
||||||
|
#define ELF_ET_DYN_BASE (randomize_et_dyn(STACK_TOP / 3 * 2))
|
||||||
|
|
||||||
/* This yields a mask that user programs can use to figure out what
|
/* This yields a mask that user programs can use to figure out what
|
||||||
instruction set this CPU supports. */
|
instruction set this CPU supports. */
|
||||||
|
@@ -359,3 +359,14 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
|
|||||||
return mm->brk;
|
return mm->brk;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long randomize_et_dyn(unsigned long base)
|
||||||
|
{
|
||||||
|
unsigned long ret = PAGE_ALIGN(base + brk_rnd());
|
||||||
|
|
||||||
|
if (!(current->flags & PF_RANDOMIZE))
|
||||||
|
return base;
|
||||||
|
if (ret < base)
|
||||||
|
return base;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user