From f044fa0974f4eb109cb30a5fa91564af6263abd5 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Sat, 28 Oct 2017 16:13:16 +0200 Subject: [PATCH] vfs_zfsacl: fix compilation error Bug: https://bugzilla.samba.org/show_bug.cgi?id=6133 Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Thu Nov 2 03:16:11 CET 2017 on sn-devel-144 (cherry picked from commit 11da1e5c056c92fd7f51ecce0285628cac65f174) --- source3/modules/vfs_zfsacl.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source3/modules/vfs_zfsacl.c b/source3/modules/vfs_zfsacl.c index dd0f343b8c6..2e277c67a24 100644 --- a/source3/modules/vfs_zfsacl.c +++ b/source3/modules/vfs_zfsacl.c @@ -51,6 +51,7 @@ static NTSTATUS zfs_get_nt_acl_common(struct connection_struct *conn, SMB_STRUCT_STAT sbuf; const SMB_STRUCT_STAT *psbuf = NULL; int ret; + bool is_dir; if (VALID_STAT(smb_fname->st)) { psbuf = &smb_fname->st; @@ -65,10 +66,7 @@ static NTSTATUS zfs_get_nt_acl_common(struct connection_struct *conn, } psbuf = &sbuf; } - - if (S_ISDIR(psbuf->st_ex_mode) && (ace->aceMask & SMB_ACE4_ADD_FILE)) { - ace->aceMask |= SMB_ACE4_DELETE_CHILD; - } + is_dir = S_ISDIR(psbuf->st_ex_mode); /* read the number of file aces */ if((naces = acl(smb_fname->base_name, ACE_GETACLCNT, 0, NULL)) == -1) { @@ -115,6 +113,10 @@ static NTSTATUS zfs_get_nt_acl_common(struct connection_struct *conn, aceprop.aceMask |= SMB_ACE4_SYNCHRONIZE; } + if (is_dir && (aceprop.aceMask & SMB_ACE4_ADD_FILE)) { + aceprop.aceMask |= SMB_ACE4_DELETE_CHILD; + } + if(aceprop.aceFlags & ACE_OWNER) { aceprop.flags = SMB_ACE4_ID_SPECIAL; aceprop.who.special_id = SMB_ACE4_WHO_OWNER; -- 2.13.6