[SCM] Samba Shared Repository - branch v4-15-test updated
Jule Anger
janger at samba.org
Mon Jun 20 09:51:01 UTC 2022
The branch, v4-15-test has been updated
via c7b633f3172 s3/client: fix dfs deltree, resolve dfs path
via 25fa2c75304 Add test smbclient 'delree' of dir (on DFS share)
via afb66509398 s3/client: fix dfs delete, resolve dfs path
via 468736e7546 Add test smbclient 'del' of file (on DFS share)
via 4442b27ee48 Add new dfs node msdfs-share pointing to new msdfs-share2
from a1bb535cfb3 cmdline_s4: re-initialise logging once loadparm is ready
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-15-test
- Log -----------------------------------------------------------------
commit c7b633f3172f3db5d17e5a30b8987b1b6963bc96
Author: Noel Power <noel.power at suse.com>
Date: Thu Jun 16 17:17:45 2022 +0100
s3/client: fix dfs deltree, resolve dfs path
since 4cc4938a2866738aaff4dc91550bb7a5ad05d7fb do_list seems
to deal with non dfs root path, hence we need to resolve the
path before calling cli_unlink.
Also remove the knownfail
We additionally have to also remove the fallback to remove 'file3'
int the smbcacls_dfs_propagate_inherit.teardown as the deltree
that happens in the baseclass now succeeds.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15100
Signed-off-by: Noel Power <noel.power at suse.com>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Fri Jun 17 17:12:07 UTC 2022 on sn-devel-184
(cherry picked from commit 81fdcf95ae92a02f83501753dec0f29ddd555eeb)
Autobuild-User(v4-15-test): Jule Anger <janger at samba.org>
Autobuild-Date(v4-15-test): Mon Jun 20 09:50:34 UTC 2022 on sn-devel-184
commit 25fa2c753040ea2af403cecf65373844b83c2814
Author: Noel Power <noel.power at suse.com>
Date: Fri Jun 17 10:58:48 2022 +0100
Add test smbclient 'delree' of dir (on DFS share)
deltree of a file on a DFS share results in NT_STATUS_OBJECT_PATH_NOT_FOUND
Addionally add a knownfail for this (to be removed in subsequent patch
to fix bug)
We also need to add a knownfail (which will not be removed) for the
new test which will fail in smb1 envs
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15100
Signed-off-by: Noel Power <noel.power at suse.com>
Reviewed-by: Jeremy Allison <jra at samba.org>
(cherry picked from commit 23a5a05db03a8f14ab701005a8bec9a3eeff3d77)
commit afb6650939862fdabe15739181cf5d2418a53bb7
Author: Noel Power <noel.power at suse.com>
Date: Thu Jun 16 15:12:05 2022 +0100
s3/client: fix dfs delete, resolve dfs path
since 4cc4938a2866738aaff4dc91550bb7a5ad05d7fb do_list seems
to deal with non dfs root path, hence we need to resolve the
path before calling cli_unlink.
Also remove the knownfail
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15100
Signed-off-by: Noel Power <noel.power at suse.com>
Reviewed-by: Jeremy Allison <jra at samba.org>
(cherry picked from commit 7c4cb4982330cd2eda53950e977179920b1e3b04)
commit 468736e75468a321620e916d13c1bfef09430fb1
Author: Noel Power <noel.power at suse.com>
Date: Fri Jun 17 10:25:49 2022 +0100
Add test smbclient 'del' of file (on DFS share)
del of a file on a DFS share results in NT_STATUS_OBJECT_PATH_NOT_FOUND
Addionally add a knownfail (will be removed in following patch to
fix the bug)
We also need to add a knownfail (which will not be removed) for the
new test which will fail in smb1 envs
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15100
Signed-off-by: Noel Power <noel.power at suse.com>
Reviewed-by: Jeremy Allison <jra at samba.org>
(back-ported from commit db1b4df0ab3b18821da3c2dbe6d6058f0c3019b8)
commit 4442b27ee48f8379edcdb54f284ade9cd14e1bc2
Author: Noel Power <noel.power at suse.com>
Date: Fri Jun 17 10:15:42 2022 +0100
Add new dfs node msdfs-share pointing to new msdfs-share2
Also add another node within msdfs-share2 pointing to normal share
This patch is in preperation for creating a test for 'del' &
'deltree' on DFS shares. The extra redirection is necessary to
reproduce the bug
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15100
Signed-off-by: Noel Power <noel.power at suse.com>
Reviewed-by: Jeremy Allison <jra at samba.org>
(cherry picked from commit 39672a9676bff53d3ccc0ad7c1fa65a95cbceaab)
-----------------------------------------------------------------------
Summary of changes:
.../blackbox/smbcacls_dfs_propagate_inherit.py | 8 --
selftest/knownfail.d/smb1-tests | 2 +
selftest/target/Samba3.pm | 9 ++
source3/client/client.c | 63 +++++++++++---
source3/script/tests/test_smbclient_s3.sh | 95 ++++++++++++++++++++++
5 files changed, 158 insertions(+), 19 deletions(-)
Changeset truncated at 500 lines:
diff --git a/python/samba/tests/blackbox/smbcacls_dfs_propagate_inherit.py b/python/samba/tests/blackbox/smbcacls_dfs_propagate_inherit.py
index 36c29c8ccca..42680df0d06 100644
--- a/python/samba/tests/blackbox/smbcacls_dfs_propagate_inherit.py
+++ b/python/samba/tests/blackbox/smbcacls_dfs_propagate_inherit.py
@@ -85,11 +85,3 @@ class DfsInheritanceSmbCaclsTests(InheritanceSmbCaclsTests):
def tearDown(self):
super(DfsInheritanceSmbCaclsTests, self).tearDown()
- # for dfs tests inevitably we fallback to remove the local files in
- # the base class, the base class however doesn't know about the
- # target dfs share (or its contents) so we have to assume we need to
- # remove the file on the dfs share
- smbclient_args = self.build_test_cmd("smbclient", ["//%s/%s" % (self.server, self.dfs_target_share), "-c", "rm file-3"])
- self.check_output(smbclient_args)
-
-
diff --git a/selftest/knownfail.d/smb1-tests b/selftest/knownfail.d/smb1-tests
index 03d299ad7c7..b5263f28016 100644
--- a/selftest/knownfail.d/smb1-tests
+++ b/selftest/knownfail.d/smb1-tests
@@ -10,6 +10,8 @@
^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.interactive smbclient -l prompts on stdout\((ad_member|nt4_member)\)
^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.creating a bad symlink and deleting it\((ad_member|nt4_member)\)
^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.Accessing an MS-DFS link\((ad_member|nt4_member)\)
+^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.del on MS-DFS share\((ad_member|nt4_member)\)
+^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.deltree on MS-DFS share\((ad_member|nt4_member)\)
^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.Ensure archive bit is set correctly on file/dir rename\((ad_member|nt4_member)\)
^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.ccache access works for smbclient\((ad_member|nt4_member)\)
^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.using an authentication file\((ad_member|nt4_member)\)
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index ba0ebb58b2f..e578791a2ee 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -2374,6 +2374,9 @@ sub provision($$)
my $msdfs_shrdir="$shrdir/msdfsshare";
push(@dirs,$msdfs_shrdir);
+ my $msdfs_shrdir2="$shrdir/msdfsshare2";
+ push(@dirs,$msdfs_shrdir2);
+
my $msdfs_deeppath="$msdfs_shrdir/deeppath";
push(@dirs,$msdfs_deeppath);
@@ -2467,6 +2470,8 @@ sub provision($$)
symlink "msdfs:$server_ip\\smbcacls_sharedir_dfs,$server_ipv6\\smbcacls_sharedir_dfs",
"$msdfs_shrdir/smbcacls_sharedir_dfs";
+ symlink "msdfs:$server_ip\\msdfs-share2,$server_ipv6\\msdfs-share2", "$msdfs_shrdir/dfshop1";
+ symlink "msdfs:$server_ip\\tmp,$server_ipv6\\tmp", "$msdfs_shrdir2/dfshop2";
##
## create bad names in $badnames_shrdir
##
@@ -2790,6 +2795,10 @@ sub provision($$)
msdfs root = yes
msdfs shuffle referrals = yes
guest ok = yes
+[msdfs-share2]
+ path = $msdfs_shrdir2
+ msdfs root = yes
+ guest ok = yes
[hideunread]
copy = tmp
hide unreadable = yes
diff --git a/source3/client/client.c b/source3/client/client.c
index 5ad6ee7b844..f3c94de5bce 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -2378,6 +2378,9 @@ static NTSTATUS do_del(struct cli_state *cli_state, struct file_info *finfo,
{
TALLOC_CTX *ctx = talloc_tos();
char *mask = NULL;
+ struct cli_state *targetcli = NULL;
+ char *targetname = NULL;
+ struct cli_credentials *creds = samba_cmdline_get_creds();
NTSTATUS status;
mask = talloc_asprintf(ctx,
@@ -2394,7 +2397,15 @@ static NTSTATUS do_del(struct cli_state *cli_state, struct file_info *finfo,
return NT_STATUS_OK;
}
- status = cli_unlink(cli_state, mask, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
+ status = cli_resolve_path(ctx, "",
+ creds,
+ cli, mask, &targetcli, &targetname);
+ if (!NT_STATUS_IS_OK(status)) {
+ goto out;
+ }
+
+ status = cli_unlink(targetcli, targetname, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
+out:
if (!NT_STATUS_IS_OK(status)) {
d_printf("%s deleting remote file %s\n",
nt_errstr(status), mask);
@@ -2452,20 +2463,37 @@ static NTSTATUS delete_remote_files_list(struct cli_state *cli_state,
{
NTSTATUS status = NT_STATUS_OK;
struct file_list *deltree_list_iter = NULL;
+ char *targetname = NULL;
+ struct cli_state *targetcli = NULL;
+ struct cli_credentials *creds = samba_cmdline_get_creds();
+ TALLOC_CTX *ctx = talloc_tos();
for (deltree_list_iter = flist;
deltree_list_iter != NULL;
deltree_list_iter = deltree_list_iter->next) {
+ status = cli_resolve_path(ctx,
+ "",
+ creds,
+ cli_state,
+ deltree_list_iter->file_path,
+ &targetcli,
+ &targetname);
+ if (!NT_STATUS_IS_OK(status)) {
+ d_printf("delete_remote_files %s: %s\n",
+ deltree_list_iter->file_path,
+ nt_errstr(status));
+ return status;
+ }
if (CLI_DIRSEP_CHAR == '/') {
/* POSIX. */
- status = cli_posix_unlink(cli_state,
- deltree_list_iter->file_path);
+ status = cli_posix_unlink(targetcli,
+ targetname);
} else if (deltree_list_iter->isdir) {
- status = cli_rmdir(cli_state,
- deltree_list_iter->file_path);
+ status = cli_rmdir(targetcli,
+ targetname);
} else {
- status = cli_unlink(cli_state,
- deltree_list_iter->file_path,
+ status = cli_unlink(targetcli,
+ targetname,
FILE_ATTRIBUTE_SYSTEM |
FILE_ATTRIBUTE_HIDDEN);
}
@@ -2574,14 +2602,27 @@ static int cmd_deltree(void)
deltree_list_iter = deltree_list_iter->next) {
if (deltree_list_iter->isdir == false) {
+ char *targetname = NULL;
+ struct cli_state *targetcli = NULL;
+ struct cli_credentials *creds = samba_cmdline_get_creds();
+ status = cli_resolve_path(ctx,
+ "",
+ creds,
+ cli,
+ deltree_list_iter->file_path,
+ &targetcli,
+ &targetname);
+ if (!NT_STATUS_IS_OK(status)) {
+ goto err;
+ }
/* Just a regular file. */
if (CLI_DIRSEP_CHAR == '/') {
/* POSIX. */
- status = cli_posix_unlink(cli,
- deltree_list_iter->file_path);
+ status = cli_posix_unlink(targetcli,
+ targetname);
} else {
- status = cli_unlink(cli,
- deltree_list_iter->file_path,
+ status = cli_unlink(targetcli,
+ targetname,
FILE_ATTRIBUTE_SYSTEM |
FILE_ATTRIBUTE_HIDDEN);
}
diff --git a/source3/script/tests/test_smbclient_s3.sh b/source3/script/tests/test_smbclient_s3.sh
index 4d03b97f476..caf5b3f64d7 100755
--- a/source3/script/tests/test_smbclient_s3.sh
+++ b/source3/script/tests/test_smbclient_s3.sh
@@ -528,6 +528,93 @@ EOF
return 0
}
+test_msdfs_del()
+{
+ tmpfile="$PREFIX/smbclient.in.$$"
+ filename_src="src.$$"
+ filename_src_path="$PREFIX/$filename_src"
+ rm -f "$filename_src_path"
+ touch "$filename_src_path"
+
+ cat > $tmpfile <<EOF
+lcd $PREFIX
+cd dfshop1
+cd dfshop2
+put $filename_src
+del $filename_src
+quit
+EOF
+
+ cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/msdfs-share -I $SERVER_IP $ADDARGS < $tmpfile 2>&1'
+ eval echo "$cmd"
+ out=`eval $cmd`
+ ret=$?
+ rm -f "$tmpfile"
+ rm -f "$filename_src_path"
+
+ if [ $ret != 0 ] ; then
+ echo "$out"
+ echo "failed deleteing $filename_src with error $ret"
+ return 1
+ fi
+
+ echo "$out" | grep "NT_STATUS" >/dev/null 2>&1
+
+ ret="$?"
+ if [ "$ret" -eq 0 ] ; then
+ echo "$out"
+ echo "del $filename_src NT_STATUS_ error"
+ return 1
+ fi
+ return 0
+}
+
+test_msdfs_deltree()
+{
+ tmpfile="$PREFIX/smbclient.in.$$"
+ dirname_src="foodir.$$"
+ filename_src="src.$$"
+ filename_src_path="$PREFIX/$filename_src"
+ dirname_src_path="$PREFIX/$dirname"
+ rm -f "$filename_src_path"
+ touch "$filename_src_path"
+
+ cat > $tmpfile <<EOF
+lcd $PREFIX
+cd dfshop1
+cd dfshop2
+mkdir $dirname_src
+cd $dirname_src
+put $filename_src
+cd ..
+deltree $dirname_src
+quit
+EOF
+
+ cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/msdfs-share -I $SERVER_IP $ADDARGS < $tmpfile 2>&1'
+ eval echo "$cmd"
+ out=`eval $cmd`
+ ret=$?
+ rm -f "$tmpfile"
+ rm -f "$filename_src_path"
+ rm -f "$dirname_src_path"
+
+ if [ $ret != 0 ] ; then
+ echo "$out"
+ echo "deltree failed deleting dir $dirname_src with error $ret"
+ return 1
+ fi
+
+ echo "$out" | grep "NT_STATUS" >/dev/null 2>&1
+
+ ret="$?"
+ if [ "$ret" -eq 0 ] ; then
+ echo "$out"
+ echo "deltree $dirname_src NT_STATUS_ error"
+ return 1
+ fi
+ return 0
+}
# Archive bits are correctly set on file/dir creation and rename.
test_rename_archive_bit()
@@ -2125,6 +2212,14 @@ testit "Hardlink on MS-DFS share" \
test_msdfs_hardlink || \
failed=`expr $failed + 1`
+testit "del on MS-DFS share" \
+ test_msdfs_del || \
+ failed=`expr $failed + 1`
+
+testit "deltree on MS-DFS share" \
+ test_msdfs_deltree || \
+ failed=`expr $failed + 1`
+
testit "Ensure archive bit is set correctly on file/dir rename" \
test_rename_archive_bit || \
failed=`expr $failed + 1`
--
Samba Shared Repository
More information about the samba-cvs
mailing list