]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: use parent_smb_fname() in mkdir_internal()
authorRalph Boehme <slow@samba.org>
Tue, 28 Apr 2020 14:47:44 +0000 (16:47 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 29 Apr 2020 16:39:40 +0000 (16:39 +0000)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/open.c

index 71be6a4966f3991da9a2ac6d9865f5f18ad5b18c..ea7f66f82cf423651abc649312217fb4e6018c17 100644 (file)
@@ -4065,12 +4065,14 @@ static NTSTATUS mkdir_internal(connection_struct *conn,
        const struct loadparm_substitution *lp_sub =
                loadparm_s3_global_substitution();
        mode_t mode;
+       struct smb_filename *parent_dir_fname = NULL;
        char *parent_dir = NULL;
        NTSTATUS status;
        bool posix_open = false;
        bool need_re_stat = false;
        uint32_t access_mask = SEC_DIR_ADD_SUBDIR;
        int ret;
+       bool ok;
 
        if (!CAN_WRITE(conn) || (access_mask & ~(conn->share_access))) {
                DEBUG(5,("mkdir_internal: failing share access "
@@ -4078,10 +4080,14 @@ static NTSTATUS mkdir_internal(connection_struct *conn,
                return NT_STATUS_ACCESS_DENIED;
        }
 
-       if (!parent_dirname(talloc_tos(), smb_dname->base_name, &parent_dir,
-                           NULL)) {
+       ok = parent_smb_fname(talloc_tos(),
+                             smb_dname,
+                             &parent_dir_fname,
+                             NULL);
+       if (!ok) {
                return NT_STATUS_NO_MEMORY;
        }
+       parent_dir = parent_dir_fname->base_name;
 
        if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) {
                posix_open = true;