summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2020-08-20 16:41:36 +0200
committerKarolin Seeger <kseeger@samba.org>2020-10-30 12:26:29 +0000
commitc64c277b607a3688f86c333fbb3ba151c8667964 (patch)
tree5c6e74ec1808f8168765bb521a8fcd4b3061db77
parent2a6c27d63b75c8535d239a7e9eeefc6e59cdf276 (diff)
downloadsamba-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.c15
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) {