aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2004-03-17 13:19:43 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2004-03-17 13:19:43 +0000
commit9cdb62160b676e0ef0b295aafd3d48229c3c4eb5 (patch)
tree7e98494923831a5442eb57f460a169303f365d0d
parent34f74e1ed89c9aa8f62b9d75a2b7b9be5768f2e2 (diff)
downloadsrc-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.c7
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);