diff options
author | ghelmer <ghelmer@FreeBSD.org> | 2006-06-05 16:41:27 +0000 |
---|---|---|
committer | ghelmer <ghelmer@FreeBSD.org> | 2006-06-05 16:41:27 +0000 |
commit | 253ab973adb0bb16d8d7e3403ff4b20128667c87 (patch) | |
tree | a0179df3906f1a67394e56112ac3ea18fc4bd284 /sys/fs/procfs | |
parent | 12e9888924f721f54216eacc1e4ca35c4a571ec5 (diff) | |
download | FreeBSD-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/fs/procfs')
-rw-r--r-- | sys/fs/procfs/procfs.c | 10 |
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; |