s3: selftest: Add test_smbclient_iconv.sh to check client behavior on bad name conver...
authorJeremy Allison <jra@samba.org>
Mon, 11 May 2020 22:37:00 +0000 (15:37 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 12 May 2020 19:53:46 +0000 (19:53 +0000)
SMB2 and NT1 fail this, CORE already returns NT_STATUS_INVALID_NETWORK_RESPONSE
on bad conversion.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14374

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
selftest/knownfail.d/bad_iconv [new file with mode: 0644]
source3/script/tests/test_smbclient_iconv.sh [new file with mode: 0755]
source3/selftest/tests.py

diff --git a/selftest/knownfail.d/bad_iconv b/selftest/knownfail.d/bad_iconv
new file mode 100644 (file)
index 0000000..cdedc70
--- /dev/null
@@ -0,0 +1,3 @@
+samba3.blackbox.smbclient_iconv.NT1
+samba3.blackbox.smbclient_iconv.SMB2
+
diff --git a/source3/script/tests/test_smbclient_iconv.sh b/source3/script/tests/test_smbclient_iconv.sh
new file mode 100755 (executable)
index 0000000..0ec7b67
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# This checks directory listing with a file containing
+# an invalid CP850 conversion name returns NT_STATUS_INVALID_NETWORK_RESPONSE
+
+if [ $# -lt 6 ]; then
+cat <<EOF
+Usage: test_smbclient_iconv.sh SERVER SERVER_IP SHARENAME USERNAME PASSWORD SMBCLIENT
+EOF
+exit 1;
+fi
+
+SERVER="$1"
+SERVER_IP="$2"
+SHARENAME="$3"
+USERNAME="$4"
+PASSWORD="$5"
+SMBCLIENT="$6"
+shift 6
+ADDARGS="$@"
+
+incdir=`dirname $0`/../../../testprogs/blackbox
+. $incdir/subunit.sh
+
+failed=0
+
+test_smbclient_iconv()
+{
+    smbclient_config="$PREFIX/client/client_cp850_smbconf"
+    cat > $smbclient_config <<EOF
+[global]
+    unix charset = cp850
+    client min protocol = core
+EOF
+
+    cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT -U$USERNAME%$PASSWORD //$SERVER/$SHARENAME --configfile=$smbclient_config "$ADDARGS" -c ls 2>&1'
+    eval echo "$cmd"
+    out=$(eval $cmd)
+    rm -f $smbclient_config
+
+    echo "$out" | grep 'NT_STATUS_INVALID_NETWORK_RESPONSE'
+    ret=$?
+    if [ $ret -ne 0 ] ; then
+       echo "$out"
+       echo 'failed - should get: NT_STATUS_INVALID_NETWORK_RESPONSE.'
+       return 1
+    fi
+
+    return 0
+}
+
+testit "bad_iconv smbclient" test_smbclient_iconv || failed=$(expr $failed + 1)
+testok $0 $failed
index 2efb21fe8de10a41be0767e801d6ed32e565b9bf..b5d7c3678834d4272284540fcb2e9c69494e56d0 100755 (executable)
@@ -424,6 +424,15 @@ for env in ["fileserver"]:
     plantestsuite("samba3.blackbox.NT1.shadow_copy_torture", env + "_smb1_done",
                   [os.path.join(samba3srcdir, "script/tests/test_smb1_shadow_copy_torture.sh"),
                    '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbtorture4])
+    plantestsuite("samba3.blackbox.smbclient_iconv.SMB2", env,
+                  [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
+                   '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3])
+    plantestsuite("samba3.blackbox.smbclient_iconv.NT1", env + "_smb1_done",
+                  [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
+                   '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3, '-mNT1'])
+    plantestsuite("samba3.blackbox.smbclient_iconv.CORE", env + "_smb1_done",
+                  [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
+                   '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3, '-mCORE'])
 
     #
     # tar command tests