]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: smbd: Convert call_trans2mkdir() to use filename_convert_dirfsp().
authorJeremy Allison <jra@samba.org>
Wed, 27 Jul 2022 19:39:11 +0000 (12:39 -0700)
committerVolker Lendecke <vl@samba.org>
Thu, 28 Jul 2022 15:38:38 +0000 (15:38 +0000)
One less use of filename_convert().

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/smbd/smb1_trans2.c

index 120d63d5ca833b432b5dc88f74ff6924da11c3c3..537b4dc6ff20eed5410767d9e7bbc6724ba997f8 100644 (file)
@@ -2623,6 +2623,7 @@ static void call_trans2mkdir(connection_struct *conn, struct smb_request *req,
                             char **ppdata, int total_data,
                             unsigned int max_data_bytes)
 {
+       struct files_struct *dirfsp = NULL;
        struct files_struct *fsp = NULL;
        struct smb_filename *smb_dname = NULL;
        char *params = *pparams;
@@ -2631,6 +2632,7 @@ static void call_trans2mkdir(connection_struct *conn, struct smb_request *req,
        NTSTATUS status = NT_STATUS_OK;
        struct ea_list *ea_list = NULL;
        uint32_t ucf_flags = ucf_flags_from_smb_request(req);
+       NTTIME twrp = 0;
        TALLOC_CTX *ctx = talloc_tos();
 
        if (!CAN_WRITE(conn)) {
@@ -2669,13 +2671,16 @@ static void call_trans2mkdir(connection_struct *conn, struct smb_request *req,
 
        DEBUG(3,("call_trans2mkdir : name = %s\n", directory));
 
-       status = filename_convert(ctx,
-                               conn,
-                               directory,
-                               ucf_flags,
-                               0,
-                               &smb_dname);
-
+       if (ucf_flags & UCF_GMT_PATHNAME) {
+               extract_snapshot_token(directory, &twrp);
+       }
+       status = filename_convert_dirfsp(ctx,
+                                        conn,
+                                        directory,
+                                        ucf_flags,
+                                        twrp,
+                                        &dirfsp,
+                                        &smb_dname);
        if (!NT_STATUS_IS_OK(status)) {
                if (NT_STATUS_EQUAL(status,NT_STATUS_PATH_NOT_COVERED)) {
                        reply_botherror(req,
@@ -2727,7 +2732,7 @@ static void call_trans2mkdir(connection_struct *conn, struct smb_request *req,
        status = SMB_VFS_CREATE_FILE(
                conn,                                   /* conn */
                req,                                    /* req */
-               NULL,                                   /* dirfsp */
+               dirfsp,                                 /* dirfsp */
                smb_dname,                              /* fname */
                MAXIMUM_ALLOWED_ACCESS,                 /* access_mask */
                FILE_SHARE_NONE,                        /* share_access */