diff options
author | Jeremy Allison <jra@samba.org> | 2023-02-28 11:18:10 -0800 |
---|---|---|
committer | Jule Anger <janger@samba.org> | 2023-03-08 10:15:09 +0000 |
commit | 3fb8f2c579cf13fd7d0367ace97d8d2ff5d2c5ac (patch) | |
tree | c7d2655d0eaa4e4ae61f2f398e38fafec40f4111 | |
parent | f2c9d59e5a3c66156a20d297c8660ab2609bedb5 (diff) | |
download | samba-3fb8f2c579cf13fd7d0367ace97d8d2ff5d2c5ac.tar.gz |
s3: tests: Add new test_stream_dir_rename.sh test.
Shows we are leaking an fsp/fd if we request a non-existent stream on a file.
This then causes rename of a directory containing the file to be denied, as
it thinks we have an existing open file below it.
Add knownfail.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15314
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(cherry picked from commit c54bec26ad23b0121b2ddfbf04bc81050f27e6e1)
-rw-r--r-- | selftest/knownfail.d/stream_rename | 1 | ||||
-rwxr-xr-x | source3/script/tests/test_stream_dir_rename.sh | 72 | ||||
-rwxr-xr-x | source3/selftest/tests.py | 4 |
3 files changed, 77 insertions, 0 deletions
diff --git a/selftest/knownfail.d/stream_rename b/selftest/knownfail.d/stream_rename new file mode 100644 index 00000000000..2dccb826cd6 --- /dev/null +++ b/selftest/knownfail.d/stream_rename @@ -0,0 +1 @@ +^samba3.blackbox.stream_dir_rename.stream_rename\(fileserver\) diff --git a/source3/script/tests/test_stream_dir_rename.sh b/source3/script/tests/test_stream_dir_rename.sh new file mode 100755 index 00000000000..7ac3194f649 --- /dev/null +++ b/source3/script/tests/test_stream_dir_rename.sh @@ -0,0 +1,72 @@ +#!/bin/sh +# +# Test a stream can rename a directory once an invalid stream path below it was requested. +# BUG: https://bugzilla.samba.org/show_bug.cgi?id=15314 + +if [ $# -lt 5 ]; then + cat <<EOF +Usage: test_stream_dir_rename.sh SERVER USERNAME PASSWORD PREFIX SMBCLIENT +EOF + exit 1 +fi + +SERVER="${1}" +USERNAME="${2}" +PASSWORD="${3}" +PREFIX="${4}" +SMBCLIENT="${5}" +SMBCLIENT="$VALGRIND ${SMBCLIENT}" +shift 5 + +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 + +test_stream_xattr_rename() +{ + tmpfile=$PREFIX/smbclient_interactive_prompt_commands + # + # Test against streams_xattr_nostrict + # + cat >$tmpfile <<EOF +deltree stream_xattr_test +deltree stream_xattr_test1 +mkdir stream_xattr_test +put ${PREFIX}/smbclient_interactive_prompt_commands stream_xattr_test/file.txt +get stream_xattr_test/file.txt:abcf +rename stream_xattr_test stream_xattr_test1 +deltree stream_xattr_test +deltree stream_xattr_test1 +quit +EOF + cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/streams_xattr_nostrict < $tmpfile 2>&1' + eval echo "$cmd" + out=$(eval $cmd) + ret=$? + rm -f $tmpfile + + if [ $ret -ne 0 ]; then + echo "$out" + echo "failed rename on xattr stream test to test1 with error $ret" + return 1 + fi + + echo "$out" | grep "NT_STATUS_ACCESS_DENIED" + ret=$? + if [ $ret -eq 0 ]; then + echo "$out" + echo "failed rename on xattr stream with NT_STATUS_ACCESS_DENIED" + return 1 + fi +} + +testit "stream_rename" \ + test_stream_xattr_rename || + failed=$((failed + 1)) + +testok "$0" "$failed" diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py index 93fb4a97f89..eab160908ea 100755 --- a/source3/selftest/tests.py +++ b/source3/selftest/tests.py @@ -773,6 +773,10 @@ for env in ["fileserver"]: [os.path.join(samba3srcdir, "script/tests/test_veto_files.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/veto', smbclient3]) + plantestsuite("samba3.blackbox.stream_dir_rename", env, + [os.path.join(samba3srcdir, "script/tests/test_stream_dir_rename.sh"), + '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3]) + # # tar command tests # |