diff options
author | Jeremy Allison <jra@samba.org> | 2018-04-11 10:33:22 -0700 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2018-05-07 09:56:11 +0200 |
commit | 81e7736c745dcceb8c1ad3859e33fa8c8de6d47e (patch) | |
tree | 08ac30d118343d72639fac124476481202d1683b | |
parent | 3d4a8f2c5f1f89415ae52539f3c99e6b0b52f020 (diff) | |
download | samba-81e7736c745dcceb8c1ad3859e33fa8c8de6d47e.tar.gz |
s3: tests: Regression test to ensure we can never return a DIRECTORY attribute on a stream.
Tests streams_xattr and also streams_depot.
Inspired from a real-world test case by Andrew Walker <awalker@ixsystems.com>.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13380
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Böhme <slow@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Thu Apr 12 02:04:28 CEST 2018 on sn-devel-144
(cherry picked from commit 82beaf868f252c4bc975ddafd80240af6f679b83)
-rwxr-xr-x | selftest/target/Samba3.pm | 4 | ||||
-rwxr-xr-x | source3/script/tests/test_smbclient_s3.sh | 76 |
2 files changed, 80 insertions, 0 deletions
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index 7e4224a4578..1f80f86945b 100755 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -2173,6 +2173,10 @@ sub provision($$$$$$$$$) kernel oplocks = yes vfs objects = streams_xattr xattr_tdb +[streams_xattr] + copy = tmp + vfs objects = streams_xattr xattr_tdb + [compound_find] copy = tmp smbd:find async delay usec = 10000 diff --git a/source3/script/tests/test_smbclient_s3.sh b/source3/script/tests/test_smbclient_s3.sh index e48ad30617a..706023b7d19 100755 --- a/source3/script/tests/test_smbclient_s3.sh +++ b/source3/script/tests/test_smbclient_s3.sh @@ -1598,6 +1598,78 @@ EOF return 0 } +# Test xattr_stream correctly reports mode. +# BUG: https://bugzilla.samba.org/show_bug.cgi?id=13380 + +test_stream_directory_xattr() +{ + tmpfile=$PREFIX/smbclient_interactive_prompt_commands +# +# Test against streams_xattr +# + cat > $tmpfile <<EOF +deltree foo +mkdir foo +put ${PREFIX}/smbclient_interactive_prompt_commands foo:bar +setmode foo -a +allinfo foo:bar +deltree foo +quit +EOF + cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/streams_xattr -I $SERVER_IP $ADDARGS < $tmpfile 2>&1' + eval echo "$cmd" + out=`eval $cmd` + ret=$? + rm -f $tmpfile + + if [ $ret != 0 ] ; then + echo "$out" + echo "failed checking attributes on xattr stream foo:bar with error $ret" + return 1 + fi + + echo "$out" | grep "attributes:.*80" + ret=$? + if [ $ret != 0 ] ; then + echo "$out" + echo "failed checking attributes on xattr stream foo:bar" + return 1 + fi + +# +# Test against streams_depot +# + cat > $tmpfile <<EOF +deltree foo +mkdir foo +put ${PREFIX}/smbclient_interactive_prompt_commands foo:bar +setmode foo -a +allinfo foo:bar +deltree foo +quit +EOF + cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/tmp -I $SERVER_IP $ADDARGS < $tmpfile 2>&1' + eval echo "$cmd" + out=`eval $cmd` + ret=$? + rm -f $tmpfile + + if [ $ret != 0 ] ; then + echo "$out" + echo "failed checking attributes on depot stream foo:bar with error $ret" + return 1 + fi + + echo "$out" | grep "attributes:.*80" + ret=$? + if [ $ret != 0 ] ; then + echo "$out" + echo "failed checking attributes on depot stream foo:bar" + return 1 + fi +} + +# LOGDIR_PREFIX=test_smbclient_s3 # possibly remove old logdirs: @@ -1697,6 +1769,10 @@ testit "streams_depot can delete correctly" \ test_streams_depot_delete || \ failed=`expr $failed + 1` +testit "stream_xattr attributes" \ + test_stream_directory_xattr || \ + failed=`expr $failed + 1` + testit "follow symlinks = no" \ test_nosymlinks || \ failed=`expr $failed + 1` |