Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/imgact_elf.c
Show First 20 Lines • Show All 1,215 Lines • ▼ Show 20 Lines | case PT_INTERP: | ||||
goto ret; | goto ret; | ||||
} | } | ||||
error = __elfN(get_interp)(imgp, &phdr[i], &interp, | error = __elfN(get_interp)(imgp, &phdr[i], &interp, | ||||
&free_interp); | &free_interp); | ||||
if (error != 0) | if (error != 0) | ||||
goto ret; | goto ret; | ||||
break; | break; | ||||
case PT_GNU_STACK: | case PT_GNU_STACK: | ||||
if (__elfN(nxstack)) | if (__elfN(nxstack)) { | ||||
imgp->stack_prot = | imgp->stack_prot = | ||||
__elfN(trans_prot)(phdr[i].p_flags); | __elfN(trans_prot)(phdr[i].p_flags); | ||||
if ((imgp->stack_prot & VM_PROT_RW) != | |||||
VM_PROT_RW) { | |||||
uprintf("Invalid PT_GNU_STACK\n"); | |||||
error = ENOEXEC; | |||||
goto ret; | |||||
} | |||||
} | |||||
imgp->stack_sz = phdr[i].p_memsz; | imgp->stack_sz = phdr[i].p_memsz; | ||||
break; | break; | ||||
case PT_PHDR: /* Program header table info */ | case PT_PHDR: /* Program header table info */ | ||||
proghdr = phdr[i].p_vaddr; | proghdr = phdr[i].p_vaddr; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,674 Lines • Show Last 20 Lines |