summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_acl_nfs4.c
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2009-12-19 11:41:52 +0000
committertrasz <trasz@FreeBSD.org>2009-12-19 11:41:52 +0000
commit6d8f8050bf9d7cacd62498b78f7ed2b89002d798 (patch)
tree8ae4141716f9a5597f0731c124ae203e37b24d13 /sys/kern/subr_acl_nfs4.c
parent5ff872c06bb52dad2470520cac1837f27db5fd6a (diff)
downloadFreeBSD-src-6d8f8050bf9d7cacd62498b78f7ed2b89002d798.zip
FreeBSD-src-6d8f8050bf9d7cacd62498b78f7ed2b89002d798.tar.gz
Interpret VAPPEND correctly in vaccess_acl_nfs4(9).
Diffstat (limited to 'sys/kern/subr_acl_nfs4.c')
-rw-r--r--sys/kern/subr_acl_nfs4.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/kern/subr_acl_nfs4.c b/sys/kern/subr_acl_nfs4.c
index c3f4b65..fbd233b 100644
--- a/sys/kern/subr_acl_nfs4.c
+++ b/sys/kern/subr_acl_nfs4.c
@@ -82,6 +82,13 @@ _access_mask_from_accmode(accmode_t accmode)
access_mask |= accmode2mask[i].mask;
}
+ /*
+ * VAPPEND is just a modifier for VWRITE; if the caller asked
+ * for 'VAPPEND | VWRITE', we want to check for ACL_APPEND_DATA only.
+ */
+ if (access_mask & ACL_APPEND_DATA)
+ access_mask &= ~ACL_WRITE_DATA;
+
return (access_mask);
}
OpenPOWER on IntegriCloud