From: Ralph Boehme Date: Fri, 16 Oct 2020 10:28:39 +0000 (+0200) Subject: vfs_shadow_copy2: deal with real dirfsps in shadow_copy2_openat() X-Git-Tag: samba-4.14.0rc1~385 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f89808213015b36b22fbcba8cb26e14f33f8c9cb;p=thirdparty%2Fsamba.git 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 --- 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,