From 5bdb54f7ee12d3082763bcd9a29a062f5a4a58c1 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 1 Jun 2023 16:39:21 +0200 Subject: [PATCH 1/3] tests: Make timelimit available to test scripts Bug: https://bugzilla.samba.org/show_bug.cgi?id=15382 Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison (cherry picked from commit 4804d6b89a9146f1fc5270de158cd25254505f61) --- selftest/selftesthelpers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/selftest/selftesthelpers.py b/selftest/selftesthelpers.py index 0320008faf9..1af8f5f837c 100644 --- a/selftest/selftesthelpers.py +++ b/selftest/selftesthelpers.py @@ -226,3 +226,4 @@ rpcclient = binpath('rpcclient') smbcacls = binpath('smbcacls') smbcontrol = binpath('smbcontrol') smbstatus = binpath('smbstatus') +timelimit = binpath('timelimit') -- 2.30.2 From 6841eba2bed6bc4107b9ba804371cee68f0fa268 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 1 Jun 2023 16:41:37 +0200 Subject: [PATCH 2/3] tests: Show that we 100% loop in cli_list_old_recv() Bug: https://bugzilla.samba.org/show_bug.cgi?id=15382 Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison (cherry picked from commit e86234f3d61c62e4365e1ea105bdd29feaf7ccbe) --- selftest/knownfail.d/old-dirlist | 1 + source3/script/tests/test_old_dirlisting.sh | 28 +++++++++++++++++++++ source3/selftest/tests.py | 6 +++++ 3 files changed, 35 insertions(+) create mode 100644 selftest/knownfail.d/old-dirlist create mode 100755 source3/script/tests/test_old_dirlisting.sh diff --git a/selftest/knownfail.d/old-dirlist b/selftest/knownfail.d/old-dirlist new file mode 100644 index 00000000000..0c1066a48c4 --- /dev/null +++ b/selftest/knownfail.d/old-dirlist @@ -0,0 +1 @@ +^samba3.blackbox.smbclient_old_dir.* diff --git a/source3/script/tests/test_old_dirlisting.sh b/source3/script/tests/test_old_dirlisting.sh new file mode 100755 index 00000000000..f50a4742b1a --- /dev/null +++ b/source3/script/tests/test_old_dirlisting.sh @@ -0,0 +1,28 @@ +#!/bin/sh +# This tests listing directories using the SMBSearch call family + +if [ $# -lt 2 ]; then + cat < Date: Thu, 1 Jun 2023 15:57:26 +0200 Subject: [PATCH 3/3] libsmb: Fix directory listing against old servers cli_list_trans_recv() can be called multiple times. When it's done, it return NT_STATUS_OK and set *finfo to NULL. cli_list_old_recv() did not do the NULL part, so smbclient would endlessly loop. Bug: https://bugzilla.samba.org/show_bug.cgi?id=15382 Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Thu Jun 1 21:54:42 UTC 2023 on atb-devel-224 (cherry picked from commit f30f5793ad592e193546586b765837c0ac9f5647) --- selftest/knownfail.d/old-dirlist | 1 - source3/libsmb/clilist.c | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) delete mode 100644 selftest/knownfail.d/old-dirlist diff --git a/selftest/knownfail.d/old-dirlist b/selftest/knownfail.d/old-dirlist deleted file mode 100644 index 0c1066a48c4..00000000000 --- a/selftest/knownfail.d/old-dirlist +++ /dev/null @@ -1 +0,0 @@ -^samba3.blackbox.smbclient_old_dir.* diff --git a/source3/libsmb/clilist.c b/source3/libsmb/clilist.c index 25040438d9e..460b2963f88 100644 --- a/source3/libsmb/clilist.c +++ b/source3/libsmb/clilist.c @@ -537,6 +537,11 @@ static NTSTATUS cli_list_old_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, return status; } + if (state->dirlist == NULL) { + *pfinfo = NULL; + return NT_STATUS_OK; + } + num_received = talloc_array_length(state->dirlist) / DIR_STRUCT_SIZE; finfo = talloc_array(mem_ctx, struct file_info, num_received); @@ -563,6 +568,7 @@ static NTSTATUS cli_list_old_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, return status; } } + TALLOC_FREE(state->dirlist); *pfinfo = finfo; return NT_STATUS_OK; } -- 2.30.2