From f89808213015b36b22fbcba8cb26e14f33f8c9cb Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Fri, 16 Oct 2020 12:28:39 +0200 Subject: [PATCH] vfs_shadow_copy2: deal with real dirfsps in shadow_copy2_openat() Prepare shadow_copy2_openat() for real dirfsps flying by. Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- source3/modules/vfs_shadow_copy2.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c index b449e20ac0d..54577ca887d 100644 --- a/source3/modules/vfs_shadow_copy2.c +++ b/source3/modules/vfs_shadow_copy2.c @@ -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, ×tamp, &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, -- 2.47.3