vfs_zfsacl: fix compilation error
authorRalph Boehme <slow@samba.org>
Sat, 28 Oct 2017 14:13:16 +0000 (16:13 +0200)
committerJeremy Allison <jra@samba.org>
Thu, 2 Nov 2017 02:16:10 +0000 (03:16 +0100)
Bug: https://bugzilla.samba.org/show_bug.cgi?id=6133

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Thu Nov  2 03:16:11 CET 2017 on sn-devel-144

source3/modules/vfs_zfsacl.c

index dd0f343b8c6b2e3b2d5ae064203437604b69e0bb..2e277c67a244534a779b33a1e651c503b0de3b4a 100644 (file)
@@ -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;