From 6b6e427c0578f2dc0a3c01f9bb1387e0c9694be9 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 14 Apr 2023 17:22:18 +0200 Subject: [PATCH] shadow_copy2: Fix stream open for streams_depot paths streams_depot hands us absolute paths with : filename components instead of having set smb_fname_in->stream_name. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15358 Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Mon Apr 17 18:11:07 UTC 2023 on atb-devel-224 (cherry picked from commit 526f381f413d1cb5cde93b9542034f5ebfcfcc10) --- source3/modules/vfs_shadow_copy2.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c index a3a6afbc3ac..db221655a3e 100644 --- a/source3/modules/vfs_shadow_copy2.c +++ b/source3/modules/vfs_shadow_copy2.c @@ -1521,15 +1521,22 @@ static struct smb_filename *shadow_copy2_openat_name( if (fsp->base_fsp != NULL) { struct smb_filename *base_fname = fsp->base_fsp->fsp_name; - SMB_ASSERT(is_named_stream(smb_fname_in)); - - result = synthetic_smb_fname( - mem_ctx, - base_fname->base_name, - smb_fname_in->stream_name, - &smb_fname_in->st, - smb_fname_in->twrp, - smb_fname_in->flags); + if (smb_fname_in->base_name[0] == '/') { + /* + * Special-case stream names from streams_depot + */ + result = cp_smb_filename(mem_ctx, smb_fname_in); + } else { + + SMB_ASSERT(is_named_stream(smb_fname_in)); + + result = synthetic_smb_fname(mem_ctx, + base_fname->base_name, + smb_fname_in->stream_name, + &smb_fname_in->st, + smb_fname_in->twrp, + smb_fname_in->flags); + } } else { result = full_path_from_dirfsp_atname( mem_ctx, dirfsp, smb_fname_in); -- 2.30.2