exec: Introduce the PROC_PS_STRINGS() macro
Rather than fetching the ps_strings address directly from a process' sysentvec, use this macro. With stack address randomization the ps_strings address is no longer fixed. Reviewed by: kib MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D33704
This commit is contained in:
@@ -43,6 +43,7 @@
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/exec.h>
|
||||
#include <sys/imgact.h>
|
||||
#include <sys/kdb.h>
|
||||
#include <sys/kernel.h>
|
||||
@@ -63,6 +64,11 @@ __FBSDID("$FreeBSD$");
|
||||
#include <machine/vfp.h>
|
||||
#include <machine/vmparam.h>
|
||||
|
||||
#include <vm/vm.h>
|
||||
#include <vm/vm_param.h>
|
||||
#include <vm/pmap.h>
|
||||
#include <vm/vm_map.h>
|
||||
|
||||
/*
|
||||
* Clear registers on exec
|
||||
*/
|
||||
@@ -340,7 +346,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
|
||||
if (sysent->sv_sigcode_base != 0)
|
||||
tf->tf_usr_lr = (register_t)sysent->sv_sigcode_base;
|
||||
else
|
||||
tf->tf_usr_lr = (register_t)(sysent->sv_psstrings -
|
||||
tf->tf_usr_lr = (register_t)(PROC_PS_STRINGS(p) -
|
||||
*(sysent->sv_szsigcode));
|
||||
/* Set the mode to enter in the signal handler */
|
||||
#if __ARM_ARCH >= 7
|
||||
|
||||
Reference in New Issue
Block a user