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;
}
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) {
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;