]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
vfs_shadow_copy2: deal with real dirfsps in shadow_copy2_openat()
authorRalph Boehme <slow@samba.org>
Fri, 16 Oct 2020 10:28:39 +0000 (12:28 +0200)
committerRalph Boehme <slow@samba.org>
Wed, 16 Dec 2020 09:08:30 +0000 (09:08 +0000)
Prepare shadow_copy2_openat() for real dirfsps flying by.

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/modules/vfs_shadow_copy2.c

index b449e20ac0d39989037367ecc9ba87574eed6bac..54577ca887d75f5a2c1f5c26ab7434979daf5cbf 100644 (file)
@@ -1333,9 +1333,17 @@ static int shadow_copy2_openat(vfs_handle_struct *handle,
        int ret;
        bool ok;
 
+       smb_fname = full_path_from_dirfsp_atname(talloc_tos(),
+                                                dirfsp,
+                                                smb_fname_in);
+       if (smb_fname == NULL) {
+               errno = ENOMEM;
+               return -1;
+       }
+
        ok = shadow_copy2_strip_snapshot_converted(talloc_tos(),
                                                   handle,
-                                                  smb_fname_in,
+                                                  smb_fname,
                                                   &timestamp,
                                                   &stripped,
                                                   &is_converted);
@@ -1361,13 +1369,6 @@ static int shadow_copy2_openat(vfs_handle_struct *handle,
                                           mode);
        }
 
-       smb_fname = cp_smb_filename(talloc_tos(), smb_fname_in);
-       if (smb_fname == NULL) {
-               TALLOC_FREE(stripped);
-               errno = ENOMEM;
-               return -1;
-       }
-
        smb_fname->base_name = shadow_copy2_convert(smb_fname,
                                               handle,
                                               stripped,