diff options
author | 2019-11-29 12:43:14 +0000 | |
---|---|---|
committer | 2019-11-29 12:43:14 +0000 | |
commit | 6ea2c94dc5510d2446ba66c46e5eb0552f8fc1c5 (patch) | |
tree | b466c061d465ce38047152ef27abf1744ade35c5 /sys/kern/sys_process.c | |
parent | Use RW_PROC() consistently. (diff) | |
download | wireguard-openbsd-6ea2c94dc5510d2446ba66c46e5eb0552f8fc1c5.tar.xz wireguard-openbsd-6ea2c94dc5510d2446ba66c46e5eb0552f8fc1c5.zip |
Return EBUSY for successive PT_TRACE_ME calls.
Match FreeBSD and NetBSD.
ok bluhm@, deraadt@, kettenis@
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r-- | sys/kern/sys_process.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 08bfb73bf5f..94837afeeca 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sys_process.c,v 1.80 2018/02/19 09:25:13 mpi Exp $ */ +/* $OpenBSD: sys_process.c,v 1.81 2019/11/29 12:43:14 mpi Exp $ */ /* $NetBSD: sys_process.c,v 1.55 1996/05/15 06:17:47 tls Exp $ */ /*- @@ -282,6 +282,8 @@ ptrace_ctrl(struct proc *p, int req, pid_t pid, caddr_t addr, int data) case PT_TRACE_ME: /* Just set the trace flag. */ tr = p->p_p; + if (ISSET(tr->ps_flags, PS_TRACED)) + return EBUSY; atomic_setbits_int(&tr->ps_flags, PS_TRACED); tr->ps_oppid = tr->ps_pptr->ps_pid; if (tr->ps_ptstat == NULL) |