diff options
author | mini <mini@FreeBSD.org> | 2002-06-22 10:05:50 +0000 |
---|---|---|
committer | mini <mini@FreeBSD.org> | 2002-06-22 10:05:50 +0000 |
commit | 783d5aaa2c9ee8d07733af5ef020ece98b185686 (patch) | |
tree | a9dfaa1be341564137fe03ecc3b1331f952109fc /sys | |
parent | 0df2d841780d7764a00f98da46fbf9a87ad42a6b (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/kern/kern_proc.c | 5 |
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; |