mirror of
https://github.com/samba-team/samba.git
synced 2025-01-07 17:18:11 +03:00
tests: Add samba3.blackbox.zero_readsize test.
smbclient crashes when smbd has "smb2 max read = 0"
in the [global] section of smb.conf.
We should fail the protocol negotiation with
NT_STATUS_INVALID_NETWORK_RESPONSE in this case.
Adds knownfail.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15306
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(Back-ported from commit 006fe80678
)
This commit is contained in:
parent
e2df45934a
commit
f7e888f78e
1
selftest/knownfail.d/smb2_zero_readsize
Normal file
1
selftest/knownfail.d/smb2_zero_readsize
Normal file
@ -0,0 +1 @@
|
||||
^samba3.blackbox.zero_readsize.smb2_zero_readsize\(simpleserver:local\)
|
101
source3/script/tests/test_zero_readsize.sh
Executable file
101
source3/script/tests/test_zero_readsize.sh
Executable file
@ -0,0 +1,101 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Test setting smb2 max read = 0.
|
||||
#
|
||||
# BUG: https://bugzilla.samba.org/show_bug.cgi?id=15306
|
||||
#
|
||||
|
||||
if [ $# -lt 6 ]; then
|
||||
cat <<EOF
|
||||
Usage: $0 SERVERCONFFILE SMBCLIENT SMBCONTROL SERVER SHARE PREFIX
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONF=${1}
|
||||
shift 1
|
||||
SMBCLIENT=${1}
|
||||
shift 1
|
||||
SMBCONTROL=${1}
|
||||
shift 1
|
||||
SERVER=${1}
|
||||
shift 1
|
||||
SHARE=${1}
|
||||
shift 1
|
||||
PREFIX=${1}
|
||||
shift 1
|
||||
|
||||
SMBCLIENT="$VALGRIND ${SMBCLIENT}"
|
||||
ADDARGS="$@"
|
||||
|
||||
incdir=$(dirname "$0")/../../../testprogs/blackbox
|
||||
. "$incdir"/subunit.sh
|
||||
|
||||
failed=0
|
||||
|
||||
#
|
||||
# Setup function
|
||||
#
|
||||
do_setup()
|
||||
{
|
||||
rm -f "${PREFIX}/zero_read_testfile"
|
||||
rm -f "${PREFIX}/zero_read_testfile_get"
|
||||
dd if=/dev/zero of="${PREFIX}/zero_read_testfile" bs=1024 count=1
|
||||
global_inject_conf="$(dirname "${SERVERCONFFILE}")/global_inject.conf"
|
||||
echo "smb2 max read = 0" >"$global_inject_conf"
|
||||
${SMBCONTROL} ${CONF} smbd reload-config
|
||||
}
|
||||
|
||||
do_cleanup()
|
||||
{
|
||||
rm -f "${PREFIX}/zero_read_testfile"
|
||||
rm -f "${PREFIX}/zero_read_testfile_get"
|
||||
global_inject_conf="$(dirname "${SERVERCONFFILE}")/global_inject.conf"
|
||||
rm "$global_inject_conf"
|
||||
${SMBCONTROL} ${CONF} smbd reload-config
|
||||
}
|
||||
|
||||
test_smb2_zero_readsize()
|
||||
{
|
||||
local tmpfile="$PREFIX/smbclient.in.$$"
|
||||
|
||||
cat >"$tmpfile" <<EOF
|
||||
lcd $PREFIX
|
||||
put zero_read_testfile zero_read_testfile_put
|
||||
get zero_read_testfile_put zero_read_testfile_get
|
||||
del zero_read_testfile_put
|
||||
quit
|
||||
EOF
|
||||
|
||||
local cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT //$SERVER/$SHARE -U$USERNAME%$PASSWORD $ADDARGS < $tmpfile 2>&1'
|
||||
eval echo "$cmd"
|
||||
out=$(eval "$cmd")
|
||||
ret=$?
|
||||
|
||||
# Check for smbclient error.
|
||||
# We should have failed the protocol negotiation, returning 1.
|
||||
if [ $ret != 1 ]; then
|
||||
echo "smbclient protocol negotiation succeeded (should have failed) zero read testfile $ret"
|
||||
echo "$out"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# We should get NT_STATUS_INVALID_NETWORK_RESPONSE
|
||||
echo "$out" | grep NT_STATUS_INVALID_NETWORK_RESPONSE
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
echo "Should get NT_STATUS_INVALID_NETWORK_RESPONSE"
|
||||
echo "$out"
|
||||
return 1
|
||||
fi
|
||||
rm "$tmpfile"
|
||||
return 0
|
||||
}
|
||||
|
||||
do_setup
|
||||
|
||||
testit "smb2_zero_readsize" test_smb2_zero_readsize || failed=$((failed + 1))
|
||||
|
||||
do_cleanup
|
||||
|
||||
testok "$0" "$failed"
|
Loading…
Reference in New Issue
Block a user