[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Wed May 24 21:43:01 UTC 2023


The branch, master has been updated
       via  412373984db smbd: also reset struct stat_ex.cached_dos_attributes in SET_STAT_INVALID()
       via  0391120079b smbd: zero intialize SMB_STRUCT_STAT in vfswrap_readdir()
       via  b4af281b2d7 CI: add a test that checks the dosmode of symlinks
      from  a5235a9d05b librpc/idl: Alias the DS_ constants in netlogon.idl to the NBT_SERVER equivilants

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


- Log -----------------------------------------------------------------
commit 412373984db6d0c20ba38076d06d0a87631890d0
Author: Ralph Boehme <slow at samba.org>
Date:   Tue May 23 17:26:03 2023 +0200

    smbd: also reset struct stat_ex.cached_dos_attributes in SET_STAT_INVALID()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15375
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Wed May 24 21:42:50 UTC 2023 on atb-devel-224

commit 0391120079b032077c3914c10189b85e61dc8498
Author: Ralph Boehme <slow at samba.org>
Date:   Tue May 23 17:23:28 2023 +0200

    smbd: zero intialize SMB_STRUCT_STAT in vfswrap_readdir()
    
    Avoid returning an uninitialized st.cached_dos_attributes.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15375
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit b4af281b2d7bfddbdb7289dadbed9db623bf0e84
Author: Ralph Boehme <slow at samba.org>
Date:   Wed May 24 13:13:19 2023 +0200

    CI: add a test that checks the dosmode of symlinks
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15375
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 source3/include/smb_macros.h                 |  5 +-
 source3/modules/vfs_default.c                |  2 +-
 source3/script/tests/test_symlink_dosmode.sh | 74 ++++++++++++++++++++++++++++
 source3/selftest/tests.py                    |  4 ++
 4 files changed, 83 insertions(+), 2 deletions(-)
 create mode 100755 source3/script/tests/test_symlink_dosmode.sh


Changeset truncated at 500 lines:

diff --git a/source3/include/smb_macros.h b/source3/include/smb_macros.h
index 0f44d1402a8..42ff9ffb0d4 100644
--- a/source3/include/smb_macros.h
+++ b/source3/include/smb_macros.h
@@ -108,7 +108,10 @@
 
 #define VALID_STAT(st) ((st).st_ex_nlink != 0)
 #define VALID_STAT_OF_DIR(st) (VALID_STAT(st) && S_ISDIR((st).st_ex_mode))
-#define SET_STAT_INVALID(st) ((st).st_ex_nlink = 0)
+#define SET_STAT_INVALID(st) { \
+		(st).st_ex_nlink = 0;					\
+		(st).cached_dos_attributes = FILE_ATTRIBUTES_INVALID;	\
+};
 
 /* Macros to get at offsets within smb_lkrng and smb_unlkrng
    structures. We cannot define these as actual structures
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 000c23208f5..89eec1146d7 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -603,7 +603,7 @@ static struct dirent *vfswrap_readdir(vfs_handle_struct *handle,
 	struct dirent *result;
 	bool fake_ctime = lp_fake_directory_create_times(SNUM(handle->conn));
 	int flags = AT_SYMLINK_NOFOLLOW;
-	SMB_STRUCT_STAT st;
+	SMB_STRUCT_STAT st = {0};
 	int ret;
 
 	START_PROFILE(syscall_readdir);
diff --git a/source3/script/tests/test_symlink_dosmode.sh b/source3/script/tests/test_symlink_dosmode.sh
new file mode 100755
index 00000000000..dd6cb6be472
--- /dev/null
+++ b/source3/script/tests/test_symlink_dosmode.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+if [ $# -lt 7 ]; then
+	cat <<EOF
+Usage: test_symlink_dosmode.sh SERVER SERVER_IP USERNAME PASSWORD LOCAL_PATH PREFIX SMBCLIENT
+EOF
+	exit 1
+fi
+
+SERVER="${1}"
+SERVER_IP="${2}"
+USERNAME="${3}"
+PASSWORD="${4}"
+LOCAL_PATH="${5}"
+PREFIX="${6}"
+SMBCLIENT="${7}"
+SMBCLIENT="$VALGRIND ${SMBCLIENT}"
+shift 6
+
+incdir=$(dirname "$0")/../../../testprogs/blackbox
+. "$incdir"/subunit.sh
+
+failed=0
+
+# Do not let deprecated option warnings muck this up
+SAMBA_DEPRECATED_SUPPRESS=1
+export SAMBA_DEPRECATED_SUPPRESS
+
+# Define the test environment/filenames.
+#
+share_test_dir="$LOCAL_PATH"
+
+rm -rf "$share_test_dir/testdir"
+
+mkdir -p "$share_test_dir/testdir/dir"
+touch "$share_test_dir/testdir/file"
+ln -s "../file" "$share_test_dir/testdir/dir/symlink"
+
+test_symlink_dosmode()
+{
+	tmpfile=$PREFIX/smbclient_interactive_prompt_commands
+	cat >"$tmpfile" <<EOF
+ls testdir/dir/*
+quit
+EOF
+	cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT -U$USERNAME%$PASSWORD //$SERVER/local_symlinks -I$SERVER_IP < $tmpfile 2>&1'
+	eval echo "$cmd"
+	out=$(eval "$cmd")
+	ret=$?
+	rm -f "$tmpfile"
+
+	if [ $ret != 0 ]; then
+		printf "%s\n" "$out"
+		printf "failed accessing local_symlinks with error %s\n" "$ret"
+		return 1
+	fi
+
+	mode=$(printf "%s" "$out" | awk '/symlink/ {print $2}')
+	echo "mode: $mode"
+	if [ x"$mode" != x"N" ] ; then
+		printf "Bad mode: '%s', expected 'N'\n" "$mode"
+		printf "%s\n" "$out"
+		return 1
+	fi
+	return 0
+}
+
+testit "symlink_dosmode" \
+	test_symlink_dosmode ||
+	failed=$((failed + 1))
+
+rm -rf "$share_test_dir/testdir"
+
+testok "$0" "$failed"
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 55087f922c1..76bc90df1ad 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -784,6 +784,10 @@ for env in ["fileserver"]:
                   [os.path.join(samba3srcdir, "script/tests/test_stream_dir_rename.sh"),
                   '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
 
+    plantestsuite("samba3.blackbox.test_symlink_dosmode", env,
+                  [os.path.join(samba3srcdir, "script/tests/test_symlink_dosmode.sh"),
+                  '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/local_symlinks',
+                  '$PREFIX', smbclient3])
     #
     # tar command tests
     #


-- 
Samba Shared Repository



More information about the samba-cvs mailing list