diff options
-rw-r--r-- | sys/kern/kern_proc.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 8039085..6034462 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -1106,11 +1106,16 @@ sysctl_kern_proc_args(SYSCTL_HANDLER_ARGS) if (!p) return (ESRCH); - if ((!ps_argsopen) && (error = p_cansee(curthread, p))) { + if ((error = p_cansee(curthread, p)) != 0) { PROC_UNLOCK(p); return (error); } + if (!ps_argsopen) { + PROC_UNLOCK(p); + return (EPERM); + } + if (req->newptr && curproc != p) { PROC_UNLOCK(p); return (EPERM); |