Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/imgact_elf.c
Show First 20 Lines • Show All 213 Lines • ▼ Show 20 Lines | SYSCTL_INT(ASLR_NODE_OID, OID_AUTO, shared_page, CTLFLAG_RWTUN, | ||||
__XSTRING(__CONCAT(ELF, __ELF_WORD_SIZE)) | __XSTRING(__CONCAT(ELF, __ELF_WORD_SIZE)) | ||||
": enable shared page address randomization"); | ": enable shared page address randomization"); | ||||
static int __elfN(sigfastblock) = 1; | static int __elfN(sigfastblock) = 1; | ||||
SYSCTL_INT(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, sigfastblock, | SYSCTL_INT(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, sigfastblock, | ||||
CTLFLAG_RWTUN, &__elfN(sigfastblock), 0, | CTLFLAG_RWTUN, &__elfN(sigfastblock), 0, | ||||
"enable sigfastblock for new processes"); | "enable sigfastblock for new processes"); | ||||
static int __elfN(rseq1) = 1; | |||||
SYSCTL_INT(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, rseq1, | |||||
CTLFLAG_RWTUN, &__elfN(rseq1), 0, | |||||
"enable rseq v1 ABI for new processes"); | |||||
static bool __elfN(allow_wx) = true; | static bool __elfN(allow_wx) = true; | ||||
SYSCTL_BOOL(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, allow_wx, | SYSCTL_BOOL(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, allow_wx, | ||||
CTLFLAG_RWTUN, &__elfN(allow_wx), 0, | CTLFLAG_RWTUN, &__elfN(allow_wx), 0, | ||||
"Allow pages to be mapped simultaneously writable and executable"); | "Allow pages to be mapped simultaneously writable and executable"); | ||||
static Elf_Brandinfo *elf_brand_list[MAX_BRANDS]; | static Elf_Brandinfo *elf_brand_list[MAX_BRANDS]; | ||||
#define aligned(a, t) (rounddown2((u_long)(a), sizeof(t)) == (u_long)(a)) | #define aligned(a, t) (rounddown2((u_long)(a), sizeof(t)) == (u_long)(a)) | ||||
▲ Show 20 Lines • Show All 1,260 Lines • ▼ Show 20 Lines | if (imgp->sysent->sv_hwcap != NULL) | ||||
AUXARGS_ENTRY(pos, AT_HWCAP, *imgp->sysent->sv_hwcap); | AUXARGS_ENTRY(pos, AT_HWCAP, *imgp->sysent->sv_hwcap); | ||||
if (imgp->sysent->sv_hwcap2 != NULL) | if (imgp->sysent->sv_hwcap2 != NULL) | ||||
AUXARGS_ENTRY(pos, AT_HWCAP2, *imgp->sysent->sv_hwcap2); | AUXARGS_ENTRY(pos, AT_HWCAP2, *imgp->sysent->sv_hwcap2); | ||||
bsdflags = 0; | bsdflags = 0; | ||||
bsdflags |= __elfN(sigfastblock) ? ELF_BSDF_SIGFASTBLK : 0; | bsdflags |= __elfN(sigfastblock) ? ELF_BSDF_SIGFASTBLK : 0; | ||||
oc = atomic_load_int(&vm_overcommit); | oc = atomic_load_int(&vm_overcommit); | ||||
bsdflags |= (oc & (SWAP_RESERVE_FORCE_ON | SWAP_RESERVE_RLIMIT_ON)) != | bsdflags |= (oc & (SWAP_RESERVE_FORCE_ON | SWAP_RESERVE_RLIMIT_ON)) != | ||||
0 ? ELF_BSDF_VMNOOVERCOMMIT : 0; | 0 ? ELF_BSDF_VMNOOVERCOMMIT : 0; | ||||
bsdflags |= __elfN(rseq1) ? ELF_BSDF_RSEQ1 : 0; | |||||
AUXARGS_ENTRY(pos, AT_BSDFLAGS, bsdflags); | AUXARGS_ENTRY(pos, AT_BSDFLAGS, bsdflags); | ||||
AUXARGS_ENTRY(pos, AT_ARGC, imgp->args->argc); | AUXARGS_ENTRY(pos, AT_ARGC, imgp->args->argc); | ||||
AUXARGS_ENTRY_PTR(pos, AT_ARGV, imgp->argv); | AUXARGS_ENTRY_PTR(pos, AT_ARGV, imgp->argv); | ||||
AUXARGS_ENTRY(pos, AT_ENVC, imgp->args->envc); | AUXARGS_ENTRY(pos, AT_ENVC, imgp->args->envc); | ||||
AUXARGS_ENTRY_PTR(pos, AT_ENVV, imgp->envv); | AUXARGS_ENTRY_PTR(pos, AT_ENVV, imgp->envv); | ||||
AUXARGS_ENTRY_PTR(pos, AT_PS_STRINGS, imgp->ps_strings); | AUXARGS_ENTRY_PTR(pos, AT_PS_STRINGS, imgp->ps_strings); | ||||
#ifdef RANDOM_FENESTRASX | #ifdef RANDOM_FENESTRASX | ||||
if ((imgp->sysent->sv_flags & SV_RNG_SEED_VER) != 0) { | if ((imgp->sysent->sv_flags & SV_RNG_SEED_VER) != 0) { | ||||
▲ Show 20 Lines • Show All 1,418 Lines • Show Last 20 Lines |