From 83499424ab011da66ded2df441277c2b89844c7b Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 21 Oct 2021 15:06:20 -0700 Subject: [PATCH 1/2] s3: smbd: Add two tests showing recursive directory delete of a directory containing veto file and msdfs links over SMB2. Add knownfail. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14878 Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme (cherry picked from commit ad0082d79a681b981154747dcde5713e1933b88f) --- selftest/knownfail.d/veto_rmdir | 1 + selftest/target/Samba3.pm | 16 ++ source3/script/tests/test_veto_rmdir.sh | 217 ++++++++++++++++++++++++ source3/selftest/tests.py | 3 + 4 files changed, 237 insertions(+) create mode 100644 selftest/knownfail.d/veto_rmdir create mode 100755 source3/script/tests/test_veto_rmdir.sh diff --git a/selftest/knownfail.d/veto_rmdir b/selftest/knownfail.d/veto_rmdir new file mode 100644 index 00000000000..ecced55d794 --- /dev/null +++ b/selftest/knownfail.d/veto_rmdir @@ -0,0 +1 @@ +^samba3.blackbox.test_veto_rmdir.rmdir can delete directory containing a veto file\(fileserver\) diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index fdbba8411bc..2fdab781fda 100755 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -1614,6 +1614,9 @@ sub setup_fileserver my $bad_iconv_sharedir="$share_dir/bad_iconv"; push(@dirs, $bad_iconv_sharedir); + my $veto_sharedir="$share_dir/veto"; + push(@dirs,$veto_sharedir); + my $ip4 = Samba::get_ipv4_addr("FILESERVER"); my $fileserver_options = " kernel change notify = yes @@ -1722,6 +1725,19 @@ sub setup_fileserver comment = smb username is [%U] vfs objects = +[veto_files_nodelete] + path = $veto_sharedir + read only = no + msdfs root = yes + veto files = /veto_name*/ + delete veto files = no + +[veto_files_delete] + path = $veto_sharedir + msdfs root = yes + veto files = /veto_name*/ + delete veto files = yes + [homes] comment = Home directories browseable = No diff --git a/source3/script/tests/test_veto_rmdir.sh b/source3/script/tests/test_veto_rmdir.sh new file mode 100755 index 00000000000..d3df8f1bba0 --- /dev/null +++ b/source3/script/tests/test_veto_rmdir.sh @@ -0,0 +1,217 @@ +#!/bin/sh +# +# Check smbclient can (or cannot) delete a directory containing veto files. +# BUG: https://bugzilla.samba.org/show_bug.cgi?id=14878 +# + +if [ $# -lt 6 ]; then +cat < "$tmpfile" < "$tmpfile" < "$tmpfile" < "$tmpfile" < "$tmpfile" < Date: Thu, 21 Oct 2021 16:18:24 -0700 Subject: [PATCH 2/2] s3: smbd: Fix recursive directory delete of a directory containing veto file and msdfs links. Remove knownfail. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14878 Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme (cherry picked from commit 73de1194c3c429ab93d722a852aa4f54213b112a) --- selftest/knownfail.d/veto_rmdir | 1 - source3/smbd/close.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 selftest/knownfail.d/veto_rmdir diff --git a/selftest/knownfail.d/veto_rmdir b/selftest/knownfail.d/veto_rmdir deleted file mode 100644 index ecced55d794..00000000000 --- a/selftest/knownfail.d/veto_rmdir +++ /dev/null @@ -1 +0,0 @@ -^samba3.blackbox.test_veto_rmdir.rmdir can delete directory containing a veto file\(fileserver\) diff --git a/source3/smbd/close.c b/source3/smbd/close.c index 191626557dc..470ca7f1b6d 100644 --- a/source3/smbd/close.c +++ b/source3/smbd/close.c @@ -1267,7 +1267,7 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, struct files_struct *fsp) /* Retry the rmdir */ ret = SMB_VFS_UNLINKAT(conn, - dirfsp, + parent_fname->fsp, at_fname, AT_REMOVEDIR); -- 2.30.2