torture: Show that recursive ls across dfs is broken
authorVolker Lendecke <vl@samba.org>
Tue, 27 Oct 2020 09:12:51 +0000 (10:12 +0100)
committerJeremy Allison <jra@samba.org>
Wed, 4 Nov 2020 18:55:40 +0000 (18:55 +0000)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
selftest/knownfail.d/recursive-dfs [new file with mode: 0644]
source3/script/tests/test_smbclient_s3.sh

diff --git a/selftest/knownfail.d/recursive-dfs b/selftest/knownfail.d/recursive-dfs
new file mode 100644 (file)
index 0000000..b5b809d
--- /dev/null
@@ -0,0 +1 @@
+^samba3\.blackbox\.smbclient_s3\..*\.Recursive\ ls\ across\ MS-DFS\ links.*
index 7d31af9e1ab9afe54b6ff9e3d2f1d213dbc35c66..7f801decb391702ef2092acab013d9df7fde00e7 100755 (executable)
@@ -404,6 +404,40 @@ EOF
     return 0
 }
 
+# Test recursive listing across msdfs links
+test_msdfs_recursive_dir()
+{
+    tmpfile=$PREFIX/smbclient.in.$$
+    error="NT_STATUS_OBJECT_PATH_NOT_FOUND"
+
+    cat > $tmpfile <<EOF
+recurse
+dir
+quit
+EOF
+
+    cmd='$SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/msdfs-share -I $SERVER_IP $ADDARGS -m $PROTOCOL < $tmpfile 2>&1'
+    out=$(eval $cmd)
+    ret="$?"
+
+    if [ "$ret" -ne 0 ] ; then
+       echo "$out"
+       echo "failed listing msfds-share\ with error $ret"
+       return 1
+    fi
+
+    echo "$out" | grep "$error" > /dev/null 2>&1
+
+    ret="$?"
+    if [ "$ret" -eq 0 ] ; then
+       echo "$out"
+       echo "Listing \\msdfs-share recursively found $error"
+       return 1
+    fi
+
+    return 0
+}
+
 # Archive bits are correctly set on file/dir creation and rename.
 test_rename_archive_bit()
 {
@@ -1987,6 +2021,10 @@ testit "Accessing an MS-DFS link" \
    test_msdfs_link || \
    failed=`expr $failed + 1`
 
+testit "Recursive ls across MS-DFS links" \
+   test_msdfs_recursive_dir || \
+   failed=`expr $failed + 1`
+
 testit "Ensure archive bit is set correctly on file/dir rename" \
     test_rename_archive_bit || \
     failed=`expr $failed + 1`