diff options
author | Jeremy Allison <jra@samba.org> | 2017-06-23 11:12:22 -0700 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2017-06-28 11:20:13 +0200 |
commit | 79afb2e2d962f161bee33ff234550c5eca4398cd (patch) | |
tree | 188cba69c1e0c8ec7381469e2d442bfdd7e4baec | |
parent | c850f47d11b1b73af1586d1f70beae1138df8485 (diff) | |
download | samba-79afb2e2d962f161bee33ff234550c5eca4398cd.tar.gz |
s3: smbd: Add regression test for non-wide symlinks to directories fail over SMB3.
Mark as knownfail.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12860
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(cherry picked from commit f1f388ef80a6516c2f44b7778420f8ffe28c6471)
-rw-r--r-- | selftest/knownfail | 1 | ||||
-rwxr-xr-x | selftest/target/Samba3.pm | 7 | ||||
-rwxr-xr-x | source3/script/tests/test_smbclient_s3.sh | 55 |
3 files changed, 63 insertions, 0 deletions
diff --git a/selftest/knownfail b/selftest/knownfail index d16d7231711..745042132fc 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -306,3 +306,4 @@ ^samba.tests.dcerpc.dnsserver.samba.tests.dcerpc.dnsserver.DnsserverTests.test_add_duplicate_different_type.* ^samba.tests.dcerpc.dnsserver.samba.tests.dcerpc.dnsserver.DnsserverTests.test_rank_none.* ^samba.tests.dcerpc.dnsserver.samba.tests.dcerpc.dnsserver.DnsserverTests.test_security_descriptor.* +^samba3.blackbox.smbclient_s3.*follow local symlinks.* diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index fb6d0f4f86b..a7699f8ccb4 100755 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -1356,6 +1356,9 @@ sub provision($$$$$$$$) my $nosymlinks_shrdir="$shrdir/nosymlinks"; push(@dirs,$nosymlinks_shrdir); + my $local_symlinks_shrdir="$shrdir/local_symlinks"; + push(@dirs,$local_symlinks_shrdir); + # this gets autocreated by winbindd my $wbsockdir="$prefix_abs/winbindd"; my $wbsockprivdir="$lockdir/winbindd_privileged"; @@ -1981,6 +1984,10 @@ sub provision($$$$$$$$) copy = tmp path = $nosymlinks_shrdir follow symlinks = no +[local_symlinks] + copy = tmp + path = $local_symlinks_shrdir + follow symlinks = yes [kernel_oplocks] copy = tmp kernel oplocks = yes diff --git a/source3/script/tests/test_smbclient_s3.sh b/source3/script/tests/test_smbclient_s3.sh index be7aafbed7c..ce1cb089ea9 100755 --- a/source3/script/tests/test_smbclient_s3.sh +++ b/source3/script/tests/test_smbclient_s3.sh @@ -1215,6 +1215,57 @@ EOF fi } +# Test we can follow normal symlinks. +# Bug: https://bugzilla.samba.org/show_bug.cgi?id=12860 +# Note - this needs to be tested over SMB3, not SMB1. + +test_local_symlinks() +{ +# Setup test dirs. + LOCAL_RAWARGS="${CONFIGURATION} -mSMB3" + LOCAL_ADDARGS="${LOCAL_RAWARGS} $*" + + test_dir="$LOCAL_PATH/local_symlinks/test" + + slink_name="$test_dir/sym_name" + slink_target_dir="$test_dir/dir1" + + rm -rf $test_dir + + mkdir -p $test_dir + mkdir $slink_target_dir + ln -s $slink_target_dir $slink_name + +# Can we cd into the symlink name and ls ? + tmpfile=$PREFIX/smbclient_interactive_prompt_commands + cat > $tmpfile <<EOF +cd test\\sym_name +ls +quit +EOF + cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/local_symlinks -I $SERVER_IP $LOCAL_ADDARGS < $tmpfile 2>&1' + eval echo "$cmd" + out=`eval $cmd` + ret=$? + rm -f $tmpfile + + if [ $ret -ne 0 ] ; then + echo "$out" + echo "failed accessing local_symlinks with error $ret" + false + return + fi + + echo "$out" | grep 'NT_STATUS_' + ret=$? + if [ $ret -eq 0 ] ; then + echo "$out" + echo "failed - got an NT_STATUS error" + false + return + fi +} + LOGDIR_PREFIX=test_smbclient_s3 # possibly remove old logdirs: @@ -1318,6 +1369,10 @@ testit "follow symlinks = no" \ test_nosymlinks || \ failed=`expr $failed + 1` +testit "follow local symlinks" \ + test_local_symlinks || \ + failed=`expr $failed + 1` + testit "rm -rf $LOGDIR" \ rm -rf $LOGDIR || \ failed=`expr $failed + 1` |