diff options
author | Ralph Boehme <slow@samba.org> | 2020-08-20 16:41:36 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2020-10-30 12:26:29 +0000 |
commit | c64c277b607a3688f86c333fbb3ba151c8667964 (patch) | |
tree | 5c6e74ec1808f8168765bb521a8fcd4b3061db77 | |
parent | 2a6c27d63b75c8535d239a7e9eeefc6e59cdf276 (diff) | |
download | samba-c64c277b607a3688f86c333fbb3ba151c8667964.tar.gz |
vfs_zfsacl: use a helper variable in zfs_get_nt_acl_common()
No change in behaviour.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14471
Pair-Programmed-With: Andrew Walker <awalker@ixsystems.com>
Signed-off-by: Ralph Boehme <slow@samba.org>
Signed-off-by: Andrew Walker <awalker@ixsystems.com>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit 13b4f913b06457d8e1f7cf71c85722bbecabd990)
-rw-r--r-- | source3/modules/vfs_zfsacl.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/source3/modules/vfs_zfsacl.c b/source3/modules/vfs_zfsacl.c index a71cda72697..17478ad116e 100644 --- a/source3/modules/vfs_zfsacl.c +++ b/source3/modules/vfs_zfsacl.c @@ -87,6 +87,7 @@ static NTSTATUS zfs_get_nt_acl_common(struct connection_struct *conn, } for(i=0; i<naces; i++) { SMB_ACE4PROP_T aceprop; + uint16_t special = 0; aceprop.aceType = (uint32_t) acebuf[i].a_type; aceprop.aceFlags = (uint32_t) acebuf[i].a_flags; @@ -109,6 +110,8 @@ static NTSTATUS zfs_get_nt_acl_common(struct connection_struct *conn, aceprop.aceMask |= SMB_ACE4_SYNCHRONIZE; } + special = acebuf[i].a_flags & (ACE_OWNER|ACE_GROUP|ACE_EVERYONE); + if (is_dir && (aceprop.aceMask & SMB_ACE4_ADD_FILE)) { aceprop.aceMask |= SMB_ACE4_DELETE_CHILD; } @@ -118,16 +121,20 @@ static NTSTATUS zfs_get_nt_acl_common(struct connection_struct *conn, inherited_is_present = true; } #endif - if(aceprop.aceFlags & ACE_OWNER) { + switch(special) { + case(ACE_OWNER): aceprop.flags = SMB_ACE4_ID_SPECIAL; aceprop.who.special_id = SMB_ACE4_WHO_OWNER; - } else if(aceprop.aceFlags & ACE_GROUP) { + break; + case(ACE_GROUP): aceprop.flags = SMB_ACE4_ID_SPECIAL; aceprop.who.special_id = SMB_ACE4_WHO_GROUP; - } else if(aceprop.aceFlags & ACE_EVERYONE) { + break; + case(ACE_EVERYONE): aceprop.flags = SMB_ACE4_ID_SPECIAL; aceprop.who.special_id = SMB_ACE4_WHO_EVERYONE; - } else { + break; + default: aceprop.flags = 0; } if (smb_add_ace4(pacl, &aceprop) == NULL) { |