939df36e55
and make the stack and heap non-executable by default. the changes fall into two basic catagories: - pmap and trap-handler changes. these are all MD: = alpha: we already track per-page execute permission with the (software) PG_EXEC bit, so just have the trap handler pay attention to it. = i386: use a new GDT segment for %cs for processes that have no executable mappings above a certain threshold (currently the bottom of the stack). track per-page execute permission with the last unused PTE bit. = powerpc/ibm4xx: just use the hardware exec bit. = powerpc/oea: we already track per-page exec bits, but the hardware only implements non-exec mappings at the segment level. so track the number of executable mappings in each segment and turn on the no-exec segment bit iff the count is 0. adjust the trap handler to deal. = sparc (sun4m): fix our use of the hardware protection bits. fix the trap handler to recognize text faults. = sparc64: split the existing unified TSB into data and instruction TSBs, and only load TTEs into the appropriate TSB(s) for the permissions. fix the trap handler to check for execute permission. = not yet implemented: amd64, hppa, sh5 - changes in all the emulations that put a signal trampoline on the stack. instead, we now put the trampoline into a uvm_aobj and map that into the process separately. originally from openbsd, adapted for netbsd by me. |
||
---|---|---|
.. | ||
Makefile | ||
files.svr4_32 | ||
sed.script | ||
svr4_32_acl.h | ||
svr4_32_dirent.h | ||
svr4_32_exec.c | ||
svr4_32_exec.h | ||
svr4_32_exec_elf32.c | ||
svr4_32_fcntl.c | ||
svr4_32_fcntl.h | ||
svr4_32_filio.c | ||
svr4_32_fuser.h | ||
svr4_32_hrt.h | ||
svr4_32_ioctl.c | ||
svr4_32_ioctl.h | ||
svr4_32_ipc.c | ||
svr4_32_ipc.h | ||
svr4_32_lwp.c | ||
svr4_32_lwp.h | ||
svr4_32_misc.c | ||
svr4_32_net.c | ||
svr4_32_resource.c | ||
svr4_32_resource.h | ||
svr4_32_siginfo.h | ||
svr4_32_signal.c | ||
svr4_32_signal.h | ||
svr4_32_socket.c | ||
svr4_32_socket.h | ||
svr4_32_sockio.c | ||
svr4_32_sockio.h | ||
svr4_32_stat.c | ||
svr4_32_stat.h | ||
svr4_32_statvfs.h | ||
svr4_32_stream.c | ||
svr4_32_stropts.h | ||
svr4_32_syscall.h | ||
svr4_32_syscallargs.h | ||
svr4_32_syscalls.c | ||
svr4_32_sysent.c | ||
svr4_32_termios.c | ||
svr4_32_termios.h | ||
svr4_32_time.h | ||
svr4_32_timod.h | ||
svr4_32_types.h | ||
svr4_32_ucontext.h | ||
svr4_32_ustat.h | ||
svr4_32_util.h | ||
syscalls.conf | ||
syscalls.master |