summaryrefslogtreecommitdiffstats
path: root/share/man/man9/VOP_ACCESS.9
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2008-11-01 19:02:05 +0000
committertrasz <trasz@FreeBSD.org>2008-11-01 19:02:05 +0000
commitd773e920c4b6682a7af6093fa36596cc1ea39c37 (patch)
treefc79be24974217d7a170923a48ce253ae81ec1d9 /share/man/man9/VOP_ACCESS.9
parent77c74d7544fa29624c417cf036d6fa635e2f5418 (diff)
downloadFreeBSD-src-d773e920c4b6682a7af6093fa36596cc1ea39c37.zip
FreeBSD-src-d773e920c4b6682a7af6093fa36596cc1ea39c37.tar.gz
Remove obsolete pseudocode from VOP_ACCESS.9, replacing it with something
closer to reality. Approved by: rwatson (mentor)
Diffstat (limited to 'share/man/man9/VOP_ACCESS.9')
-rw-r--r--share/man/man9/VOP_ACCESS.941
1 files changed, 4 insertions, 37 deletions
diff --git a/share/man/man9/VOP_ACCESS.9 b/share/man/man9/VOP_ACCESS.9
index 73eb2b5..e959fda 100644
--- a/share/man/man9/VOP_ACCESS.9
+++ b/share/man/man9/VOP_ACCESS.9
@@ -94,45 +94,12 @@ vop_access(struct vnode *vp, accmode_t accmode, struct ucred *cred, struct threa
/* If immutable bit set, nobody gets to write it. */
if ((accmode & VWRITE) && vp has immutable bit set)
- return EPERM;
+ return (EPERM);
- /* Otherwise, user id 0 always gets access. */
- if (cred->cr_uid == 0)
- return 0;
+ error = vaccess(vp->v_type, mode of vp, owner of vp,
+ group of vp, ap->a_accmode, ap->a_cred, NULL);
- mask = 0;
-
- /* Otherwise, check the owner. */
- if (cred->cr_uid == owner of vp) {
- if (accmode & VEXEC)
- mask |= S_IXUSR;
- if (accmode & VREAD)
- mask |= S_IRUSR;
- if (accmode & VWRITE)
- mask |= S_IWUSR;
- return (((mode of vp) & mask) == mask ? 0 : EACCES);
- }
-
- /* Otherwise, check the groups. */
- for (i = 0, gp = cred->cr_groups; i < cred->cr_ngroups; i++, gp++)
- if (group of vp == *gp) {
- if (accmode & VEXEC)
- mask |= S_IXGRP;
- if (accmode & VREAD)
- mask |= S_IRGRP;
- if (accmode & VWRITE)
- mask |= S_IWGRP;
- return (((mode of vp) & mask) == mask ? 0 : EACCES);
- }
-
- /* Otherwise, check everyone else. */
- if (accmode & VEXEC)
- mask |= S_IXOTH;
- if (accmode & VREAD)
- mask |= S_IROTH;
- if (accmode & VWRITE)
- mask |= S_IWOTH;
- return (((mode of vp) & mask) == mask ? 0 : EACCES);
+ return (error);
}
.Ed
.Sh ERRORS
OpenPOWER on IntegriCloud