mode_t mode)
{
int result;
- struct smb_filename *parent = NULL;
- bool ok;
DBG_DEBUG("[CEPH] mkdir(%p, %s)\n",
handle, smb_fname_str_dbg(smb_fname));
SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
- if (lp_inherit_acls(SNUM(handle->conn))) {
- ok = parent_smb_fname(talloc_tos(), smb_fname, &parent, NULL);
- if (ok && directory_has_default_acl(handle->conn,
- dirfsp,
- parent))
- {
- mode = 0777;
- }
- }
-
- TALLOC_FREE(parent);
-
result = ceph_mkdir(handle->data, smb_fname->base_name, mode);
return WRAP_RETURN(result);
}
mode_t mode)
{
int result;
- struct smb_filename *parent = NULL;
- bool ok;
START_PROFILE(syscall_mkdirat);
SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
- if (lp_inherit_acls(SNUM(handle->conn))) {
- ok = parent_smb_fname(talloc_tos(), smb_fname, &parent, NULL);
- if (ok && directory_has_default_acl(handle->conn,
- dirfsp,
- parent))
- {
- mode = (0777 & lp_directory_mask(SNUM(handle->conn)));
- }
- }
-
- TALLOC_FREE(parent);
-
result = mkdirat(fsp_get_pathref_fd(dirfsp), smb_fname->base_name, mode);
END_PROFILE(syscall_mkdirat);
return status;
}
+ if (lp_inherit_acls(SNUM(conn))) {
+ if (directory_has_default_acl(conn,
+ conn->cwd_fsp,
+ parent_dir_fname)) {
+ mode = (0777 & lp_directory_mask(SNUM(conn)));
+ }
+ }
+
ret = SMB_VFS_MKDIRAT(conn,
conn->cwd_fsp,
smb_dname,