]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
vfs_ceph: use parent_smb_fname()
authorRalph Boehme <slow@samba.org>
Tue, 28 Apr 2020 12:41:21 +0000 (14:41 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 29 Apr 2020 16:39:39 +0000 (16:39 +0000)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/modules/vfs_ceph.c

index 7f4d65d4871899806fa13a9ab6321533e04a4049..1e02a3fe2d895aef7555c3d55c654547b3d093b6 100644 (file)
@@ -355,22 +355,26 @@ static int cephwrap_mkdirat(struct vfs_handle_struct *handle,
                        mode_t mode)
 {
        int result;
-       char *parent = NULL;
-       const char *path = smb_fname->base_name;
+       struct smb_filename *parent = NULL;
+       bool ok;
 
-       DBG_DEBUG("[CEPH] mkdir(%p, %s)\n", handle, path);
+       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))
-           && parent_dirname(talloc_tos(), path, &parent, NULL)
-           && directory_has_default_acl(handle->conn, parent)) {
-               mode = 0777;
+       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,
+                                                   parent->base_name))
+               {
+                       mode = 0777;
+               }
        }
 
        TALLOC_FREE(parent);
 
-       result = ceph_mkdir(handle->data, path, mode);
+       result = ceph_mkdir(handle->data, smb_fname->base_name, mode);
        return WRAP_RETURN(result);
 }