summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_proc.c
diff options
context:
space:
mode:
authormini <mini@FreeBSD.org>2002-06-22 10:05:50 +0000
committermini <mini@FreeBSD.org>2002-06-22 10:05:50 +0000
commit783d5aaa2c9ee8d07733af5ef020ece98b185686 (patch)
treea9dfaa1be341564137fe03ecc3b1331f952109fc /sys/kern/kern_proc.c
parent0df2d841780d7764a00f98da46fbf9a87ad42a6b (diff)
downloadFreeBSD-src-783d5aaa2c9ee8d07733af5ef020ece98b185686.zip
FreeBSD-src-783d5aaa2c9ee8d07733af5ef020ece98b185686.tar.gz
Always drop the p_args reference we held for copyout, even if we're about
to change it. This fixes a leak triggered by setproctitle(3). Approved by: alfred Noticed by: Peter Jeremy <peter.jeremy@alcatel.com.au>
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r--sys/kern/kern_proc.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 1f48fa8..a5378d9 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -1024,10 +1024,9 @@ sysctl_kern_proc_args(SYSCTL_HANDLER_ARGS)
if (req->oldptr && pa != NULL) {
error = SYSCTL_OUT(req, pa->ar_args, pa->ar_length);
}
- if (req->newptr == NULL) {
- pargs_drop(pa);
+ pargs_drop(pa);
+ if (req->newptr == NULL)
return (error);
- }
PROC_LOCK(p);
pa = p->p_args;
OpenPOWER on IntegriCloud