]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: smbd: Convert call_trans2setfilepathinfo() to use filename_convert_dirfsp().
authorJeremy Allison <jra@samba.org>
Thu, 28 Jul 2022 17:41:25 +0000 (10:41 -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/smb1_trans2.c

index fd6f6c828e255c1b317e7ff5d864880e50a54f55..f46a45ab124f382329ee2037c1e050a044d32f65 100644 (file)
@@ -2371,6 +2371,7 @@ static void call_trans2setfilepathinfo(connection_struct *conn,
        char *pdata = *ppdata;
        uint16_t info_level;
        struct smb_filename *smb_fname = NULL;
+       struct files_struct *dirfsp = NULL;
        files_struct *fsp = NULL;
        NTSTATUS status = NT_STATUS_OK;
        int data_return_size = 0;
@@ -2461,6 +2462,7 @@ static void call_trans2setfilepathinfo(connection_struct *conn,
                char *fname = NULL;
                uint32_t ucf_flags = ucf_flags_from_smb_request(req);
                bool require_existing_object = true;
+               NTTIME twrp = 0;
 
                /* set path info */
                if (total_params < 7) {
@@ -2505,11 +2507,16 @@ static void call_trans2setfilepathinfo(connection_struct *conn,
                        return;
                }
 
-               status = filename_convert(req, conn,
-                                        fname,
-                                        ucf_flags,
-                                        0,
-                                        &smb_fname);
+               if (ucf_flags & UCF_GMT_PATHNAME) {
+                       extract_snapshot_token(fname, &twrp);
+               }
+               status = filename_convert_dirfsp(req,
+                                                conn,
+                                                fname,
+                                                ucf_flags,
+                                                twrp,
+                                                &dirfsp,
+                                                &smb_fname);
                if (!NT_STATUS_IS_OK(status)) {
                        if (NT_STATUS_EQUAL(status,NT_STATUS_PATH_NOT_COVERED)) {
                                reply_botherror(req,