]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
selftest: Show vfs_virusscanner crashes when traversing a 2-level directory tree.
authorJeremy Allison <jra@samba.org>
Thu, 12 Jan 2023 18:22:09 +0000 (10:22 -0800)
committerVolker Lendecke <vl@samba.org>
Fri, 13 Jan 2023 07:34:35 +0000 (07:34 +0000)
Modify check_infected_read() test to use a 2-level deep
directory.

We must have vfs_default:VFS_OPEN_HOW_RESOLVE_NO_SYMLINKS = no
set on the virusscanner share as otherwise the openat flag
shortcut defeats the test.

Add knownfail.

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

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
selftest/knownfail.d/virusscanner [new file with mode: 0644]
selftest/target/Samba3.pm
source3/script/tests/test_virus_scanner.sh

diff --git a/selftest/knownfail.d/virusscanner b/selftest/knownfail.d/virusscanner
new file mode 100644 (file)
index 0000000..9bcaae7
--- /dev/null
@@ -0,0 +1 @@
+^samba3.blackbox.virus_scanner.check_infected_read\(fileserver:local\)
index c6cdc84b615948f61bc44c263d59bdd97916771a..6f93694f1b3fec6de68788115354d0db4a429620 100755 (executable)
@@ -1998,6 +1998,7 @@ sub setup_fileserver
        virusfilter:infected files = *infected*
        virusfilter:infected file action = rename
        virusfilter:scan on close = yes
+       vfs_default:VFS_OPEN_HOW_RESOLVE_NO_SYMLINKS = no
 
 [volumeserialnumber]
        path = $volume_serial_number_sharedir
index 913c353028b11edfcf3d6bb9f71f52f63c880859..83b50df915f89404c280de82c3d56d992d723447 100755 (executable)
@@ -26,25 +26,36 @@ check_infected_read()
 {
        rm -rf "${sharedir:?}"/*
 
-       if ! touch "${sharedir}/infected.txt"; then
-               echo "ERROR: Cannot create ${sharedir}/infected.txt"
+       if ! mkdir "${sharedir}/read1"; then
+               echo "ERROR: Cannot create ${sharedir}/read1"
+               return 1
+       fi
+
+       if ! mkdir "${sharedir}/read1/read2"; then
+               echo "ERROR: Cannot create ${sharedir}/read1/read2"
                return 1
        fi
 
-       ${SMBCLIENT} "//${SERVER_IP}/${SHARE}" -U"${USER}"%"${PASSWORD}" -c "get infected.txt ${sharedir}/infected.download.txt"
+       if ! touch "${sharedir}/read1/read2/infected.txt"; then
+               echo "ERROR: Cannot create ${sharedir}/read1/read2/infected.txt"
+               return 1
+       fi
+
+       ${SMBCLIENT} "//${SERVER_IP}/${SHARE}" -U"${USER}"%"${PASSWORD}" -c "get read1/read2/infected.txt ${sharedir}/read1/read2/infected.download.txt"
 
        # check that virusfilter:rename prefix/suffix was added
-       if [ ! -f "${sharedir}/virusfilter.infected.txt.infected" ]; then
-               echo "ERROR: ${sharedir}/virusfilter.infected.txt.infected is missing."
+       if [ ! -f "${sharedir}/read1/read2/virusfilter.infected.txt.infected" ]; then
+               echo "ERROR: ${sharedir}/read1/read2/virusfilter.infected.txt.infected is missing."
                return 1
        fi
 
        # check that file was not downloaded
-       if [ -f "${sharedir}/infected.download.txt" ]; then
-               echo "ERROR: {sharedir}/infected.download.txt should not exist."
+       if [ -f "${sharedir}/read1/read2/infected.download.txt" ]; then
+               echo "ERROR: {sharedir}/read1/read2/infected.download.txt should not exist."
                return 1
        fi
 
+       rm -rf "${sharedir:?}"/*
        return 0
 }