[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Tue Jan 16 19:45:01 UTC 2024


The branch, master has been updated
       via  0caaa2d1723 vfs: Remove shadow_copy2_get_real_filename_at()
       via  6afcb7f0dbf testing: case insensitive lookups fail in shadow_copy2 snapshots
      from  c09d1a3ac1c tests: add a test for "fake directory create times"

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 0caaa2d1723084ba5a707432830c5916e85e21bc
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 11 16:49:29 2024 +0000

    vfs: Remove shadow_copy2_get_real_filename_at()
    
    The synthetic_pathref() call in shadow_copy2_get_real_filename_at()
    fails if shadow:snapdir is set outside of the share root, it creates
    an absolute path and non_widelink_open() blocks that.
    
    We don't need shadow_copy2_get_real_filename_at() anymore because the
    dirfsp already points at the correct directory in the snapshot
    directory. So get_real_filename_full_scan_at() just works fine.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=15556
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Jan 16 19:44:53 UTC 2024 on atb-devel-224

commit 6afcb7f0dbfe741e43b2070f8a78d87cdb73e042
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Jan 16 11:42:43 2024 +0100

    testing: case insensitive lookups fail in shadow_copy2 snapshots
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=15556
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/modules/vfs_shadow_copy2.c       | 95 --------------------------------
 source3/script/tests/test_shadow_copy.sh |  4 ++
 2 files changed, 4 insertions(+), 95 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c
index 47b0edc72c3..c6e6ecd26c4 100644
--- a/source3/modules/vfs_shadow_copy2.c
+++ b/source3/modules/vfs_shadow_copy2.c
@@ -2524,100 +2524,6 @@ static NTSTATUS shadow_copy2_read_dfs_pathat(struct vfs_handle_struct *handle,
 	return status;
 }
 
-static NTSTATUS shadow_copy2_get_real_filename_at(
-	struct vfs_handle_struct *handle,
-	struct files_struct *dirfsp,
-	const char *name,
-	TALLOC_CTX *mem_ctx,
-	char **found_name)
-{
-	struct shadow_copy2_private *priv = NULL;
-	time_t timestamp = 0;
-	char *stripped = NULL;
-	char *conv;
-	struct smb_filename *conv_fname = NULL;
-	NTSTATUS status;
-	bool ok;
-
-	SMB_VFS_HANDLE_GET_DATA(handle, priv, struct shadow_copy2_private,
-				return NT_STATUS_INTERNAL_ERROR);
-
-	DBG_DEBUG("Path=[%s] name=[%s]\n", fsp_str_dbg(dirfsp), name);
-
-	ok = shadow_copy2_strip_snapshot(
-		talloc_tos(), handle, dirfsp->fsp_name, &timestamp, &stripped);
-	if (!ok) {
-		status = map_nt_error_from_unix(errno);
-		DEBUG(10, ("shadow_copy2_strip_snapshot failed\n"));
-		return status;
-	}
-	if (timestamp == 0) {
-		DEBUG(10, ("timestamp == 0\n"));
-		return SMB_VFS_NEXT_GET_REAL_FILENAME_AT(
-			handle, dirfsp, name, mem_ctx, found_name);
-	}
-
-	/*
-	 * Note that stripped may be an empty string "" if path was ".". As
-	 * shadow_copy2_convert() combines "" with the shadow-copy tree connect
-	 * root fullpath and get_real_filename_full_scan() has an explicit check
-	 * for "" this works.
-	 */
-	DBG_DEBUG("stripped [%s]\n", stripped);
-
-	conv = shadow_copy2_convert(talloc_tos(), handle, stripped, timestamp);
-	if (conv == NULL) {
-		status = map_nt_error_from_unix(errno);
-		DBG_DEBUG("shadow_copy2_convert [%s] failed: %s\n",
-			  stripped,
-			  strerror(errno));
-		return status;
-	}
-
-	status = synthetic_pathref(
-		talloc_tos(),
-		dirfsp->conn->cwd_fsp,
-		conv,
-		NULL,
-		NULL,
-		0,
-		0,
-		&conv_fname);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	DEBUG(10, ("Calling NEXT_GET_REAL_FILE_NAME for conv=[%s], "
-		   "name=[%s]\n", conv, name));
-	status = SMB_VFS_NEXT_GET_REAL_FILENAME_AT(
-		handle, conv_fname->fsp, name, mem_ctx, found_name);
-	DEBUG(10, ("NEXT_REAL_FILE_NAME returned %s\n", nt_errstr(status)));
-	if (NT_STATUS_IS_OK(status)) {
-		TALLOC_FREE(conv_fname);
-		return NT_STATUS_OK;
-	}
-	if (!NT_STATUS_EQUAL(status, NT_STATUS_NOT_SUPPORTED)) {
-		TALLOC_FREE(conv_fname);
-		TALLOC_FREE(conv);
-		return NT_STATUS_NOT_SUPPORTED;
-	}
-
-	status = get_real_filename_full_scan_at(
-		conv_fname->fsp, name, false, mem_ctx, found_name);
-	TALLOC_FREE(conv_fname);
-	if (!NT_STATUS_IS_OK(status)) {
-		DBG_DEBUG("Scan [%s] for [%s] failed\n",
-			  conv, name);
-		return status;
-	}
-
-	DBG_DEBUG("Scan [%s] for [%s] returned [%s]\n",
-		  conv, name, *found_name);
-
-	TALLOC_FREE(conv);
-	return NT_STATUS_OK;
-}
-
 static const char *shadow_copy2_connectpath(
 	struct vfs_handle_struct *handle,
 	const struct files_struct *dirfsp,
@@ -3382,7 +3288,6 @@ static struct vfs_fn_pointers vfs_shadow_copy2_fns = {
 	.mkdirat_fn = shadow_copy2_mkdirat,
 	.fsetxattr_fn = shadow_copy2_fsetxattr,
 	.fchflags_fn = shadow_copy2_fchflags,
-	.get_real_filename_at_fn = shadow_copy2_get_real_filename_at,
 	.pwrite_fn = shadow_copy2_pwrite,
 	.pwrite_send_fn = shadow_copy2_pwrite_send,
 	.pwrite_recv_fn = shadow_copy2_pwrite_recv,
diff --git a/source3/script/tests/test_shadow_copy.sh b/source3/script/tests/test_shadow_copy.sh
index 3141df3568d..dd6699f2310 100755
--- a/source3/script/tests/test_shadow_copy.sh
+++ b/source3/script/tests/test_shadow_copy.sh
@@ -275,6 +275,10 @@ test_shadow_copy_fixed()
         test_count_versions $share bar/baz $ncopies_allowed || \
         failed=`expr $failed + 1`
 
+    testit "$msg - regular file in case insensitive subdir" \
+        test_count_versions $share bar/bAz $ncopies_allowed || \
+        failed=`expr $failed + 1`
+
     testit "$msg - local symlink" \
         test_count_versions $share bar/lfoo $ncopies_allowed || \
         failed=`expr $failed + 1`


-- 
Samba Shared Repository



More information about the samba-cvs mailing list