diff options
author | trasz <trasz@FreeBSD.org> | 2009-12-19 11:41:52 +0000 |
---|---|---|
committer | trasz <trasz@FreeBSD.org> | 2009-12-19 11:41:52 +0000 |
commit | 6d8f8050bf9d7cacd62498b78f7ed2b89002d798 (patch) | |
tree | 8ae4141716f9a5597f0731c124ae203e37b24d13 /sys/kern | |
parent | 5ff872c06bb52dad2470520cac1837f27db5fd6a (diff) | |
download | FreeBSD-src-6d8f8050bf9d7cacd62498b78f7ed2b89002d798.zip FreeBSD-src-6d8f8050bf9d7cacd62498b78f7ed2b89002d798.tar.gz |
Interpret VAPPEND correctly in vaccess_acl_nfs4(9).
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/subr_acl_nfs4.c | 7 |
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); } |