diff options
author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2004-03-17 13:19:43 +0000 |
---|---|---|
committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2004-03-17 13:19:43 +0000 |
commit | 9cdb62160b676e0ef0b295aafd3d48229c3c4eb5 (patch) | |
tree | 7e98494923831a5442eb57f460a169303f365d0d | |
parent | 34f74e1ed89c9aa8f62b9d75a2b7b9be5768f2e2 (diff) | |
download | src-9cdb62160b676e0ef0b295aafd3d48229c3c4eb5.tar.gz src-9cdb62160b676e0ef0b295aafd3d48229c3c4eb5.zip |
Fix information leakage.
Without this fix it is possible to cheat policies like:
- sysctl security.bsd.see_other_[gu]ids=0,
- mac_seeotheruids(4),
- jail(2)
and get full processes list with their arguments.
This problem exists from revision 1.62 of kern_proc.c when it was
introduced.
Reviewed by: nectar, rwatson.
Notes
Notes:
svn path=/head/; revision=127123
-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 803908534047..6034462ca767 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); |