]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: smbd: Convert smb2_file_rename_information() to use filename_convert_dirfsp().
authorJeremy Allison <jra@samba.org>
Thu, 28 Jul 2022 19:29:22 +0000 (12:29 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 2 Aug 2022 19:49:32 +0000 (19:49 +0000)
One less use of filename_convert().

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

index f465694a0bf4331613467a693b19a1256aeb4780..f2d6e59da3432bd6f16de39db7b4fc826db21cf1 100644 (file)
@@ -4951,9 +4951,11 @@ static NTSTATUS smb2_file_rename_information(connection_struct *conn,
        bool overwrite;
        uint32_t len;
        char *newname = NULL;
+       struct files_struct *dst_dirfsp = NULL;
        struct smb_filename *smb_fname_dst = NULL;
        const char *dst_original_lcomp = NULL;
        uint32_t ucf_flags = ucf_flags_from_smb_request(req);
+       NTTIME dst_twrp = 0;
        NTSTATUS status = NT_STATUS_OK;
        TALLOC_CTX *ctx = talloc_tos();
 
@@ -5011,12 +5013,16 @@ static NTSTATUS smb2_file_rename_information(connection_struct *conn,
                        goto out;
                }
        } else {
-               status = filename_convert(ctx,
-                                       conn,
-                                       newname,
-                                       ucf_flags,
-                                       0,
-                                       &smb_fname_dst);
+               if (ucf_flags & UCF_GMT_PATHNAME) {
+                       extract_snapshot_token(newname, &dst_twrp);
+               }
+               status = filename_convert_dirfsp(ctx,
+                                                conn,
+                                                newname,
+                                                ucf_flags,
+                                                dst_twrp,
+                                                &dst_dirfsp,
+                                                &smb_fname_dst);
                if (!NT_STATUS_IS_OK(status)) {
                        goto out;
                }