From 60eb51d6e6c23636e64fb21ece88a484679a753e Mon Sep 17 00:00:00 2001 From: Christof Schmitt Date: Wed, 13 Dec 2017 12:58:18 -0700 Subject: [PATCH] selftest: Add test for failing chdir call in smbd BUG: https://bugzilla.samba.org/show_bug.cgi?id=13189 Signed-off-by: Christof Schmitt Reviewed-by: Jeremy Allison (cherry picked from commit 0d3000be2af8f8c4a37892d95ae694ad834d7b3a) --- selftest/knownfail | 1 + source3/script/tests/test_smbd_error.sh | 56 +++++++++++++++++++++++++ source3/selftest/tests.py | 3 ++ 3 files changed, 60 insertions(+) create mode 100755 source3/script/tests/test_smbd_error.sh diff --git a/selftest/knownfail b/selftest/knownfail index 6e1d0589922..e259ccc3e85 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -308,3 +308,4 @@ ^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.vfs.fruit streams_depot.OS X AppleDouble file conversion\(nt4_dc\) +^samba3.blackbox.smbd_error.check_panic_2 diff --git a/source3/script/tests/test_smbd_error.sh b/source3/script/tests/test_smbd_error.sh new file mode 100755 index 00000000000..e9af47aea51 --- /dev/null +++ b/source3/script/tests/test_smbd_error.sh @@ -0,0 +1,56 @@ +#!/bin/sh +# +# Test smbd with failing chdir system call. +# +# Verify that smbd does not panic when the chdir system call is +# returning an error. ensure that the output format for ACL entries +# +# Copyright (C) 2017 Christof Schmitt + +. $(dirname $0)/../../../testprogs/blackbox/subunit.sh +failed=0 +error_inject_conf=$(dirname $SMB_CONF_PATH)/error_inject.conf + +panic_count_0=$(grep -c PANIC $SMBD_TEST_LOG) + +# +# Verify that a panic in smbd will result in a PANIC message in the log +# + +# As a panic is expected here, also overwrite the default "panic +# action" in selftest to not start a debugger +echo 'error_inject:chdir = panic' > $error_inject_conf +echo '[global]' >> $error_inject_conf +echo 'panic action = ""' >> $error_inject_conf + +testit_expect_failure "smbclient" $VALGRIND \ + $BINDIR/smbclient //$SERVER_IP/error_inject \ + -U$USERNAME%$PASSWORD -c dir || + failed=$(expr $failed + 1) + +rm $error_inject_conf + +panic_count_1=$(grep -c PANIC $SMBD_TEST_LOG) + +testit "check_panic_1" test $(expr $panic_count_0 + 1) -eq $panic_count_1 || + failed=$(expr $failed + 1) + +# +# Verify that a failing chdir vfs call does not result in a smbd panic +# + +echo 'error_inject:chdir = ESTALE' > $error_inject_conf + +testit_expect_failure "smbclient" $VALGRIND \ + $BINDIR/smbclient //$SERVER_IP/error_inject \ + -U$USERNAME%$PASSWORD -c dir || + failed=$(expr $failed + 1) + +panic_count_2=$(grep -c PANIC $SMBD_TEST_LOG) + +testit "check_panic_2" test $panic_count_1 -eq $panic_count_2 || + failed=$(expr $failed + 1) + +rm $error_inject_conf + +testok $0 $failed diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py index 5dfdce74aa3..5e746503c2b 100755 --- a/source3/selftest/tests.py +++ b/source3/selftest/tests.py @@ -513,6 +513,9 @@ plantestsuite("samba3.blackbox.sharesec", "simpleserver:local", [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"), configuration, os.path.join(bindir(), "sharesec"), "tmp"]) +plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local", + [ os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh") ]) + plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"), "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc", -- 2.47.2