summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorghelmer <ghelmer@FreeBSD.org>2006-06-05 16:41:27 +0000
committerghelmer <ghelmer@FreeBSD.org>2006-06-05 16:41:27 +0000
commit253ab973adb0bb16d8d7e3403ff4b20128667c87 (patch)
treea0179df3906f1a67394e56112ac3ea18fc4bd284 /sys
parent12e9888924f721f54216eacc1e4ca35c4a571ec5 (diff)
downloadFreeBSD-src-253ab973adb0bb16d8d7e3403ff4b20128667c87.zip
FreeBSD-src-253ab973adb0bb16d8d7e3403ff4b20128667c87.tar.gz
Upon further review, DES prefers this change over that in revision 1.13
to resolve the directory access problem for processes with P_SUGID flag set. Suggested by: des
Diffstat (limited to 'sys')
-rw-r--r--sys/fs/procfs/procfs.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/fs/procfs/procfs.c b/sys/fs/procfs/procfs.c
index 7f93414..90d8975 100644
--- a/sys/fs/procfs/procfs.c
+++ b/sys/fs/procfs/procfs.c
@@ -98,12 +98,7 @@ procfs_attr(PFS_ATTR_ARGS)
PROC_LOCK_ASSERT(p, MA_OWNED);
/* XXX inefficient, split into separate functions */
- if (p->p_flag & P_SUGID) {
- if (pn->pn_type == pfstype_procdir)
- vap->va_mode = 0555;
- else
- vap->va_mode = 0;
- } else if (strcmp(pn->pn_name, "ctl") == 0 ||
+ if (strcmp(pn->pn_name, "ctl") == 0 ||
strcmp(pn->pn_name, "note") == 0 ||
strcmp(pn->pn_name, "notepg") == 0)
vap->va_mode = 0200;
@@ -113,6 +108,9 @@ procfs_attr(PFS_ATTR_ARGS)
strcmp(pn->pn_name, "fpregs") == 0)
vap->va_mode = 0600;
+ if ((p->p_flag & P_SUGID) && pn->pn_type != pfstype_procdir)
+ vap->va_mode = 0;
+
vap->va_uid = p->p_ucred->cr_uid;
vap->va_gid = p->p_ucred->cr_gid;
OpenPOWER on IntegriCloud