[SCM] Samba Shared Repository - branch v4-23-stable updated

Jule Anger janger at samba.org
Fri Sep 26 13:51:59 UTC 2025


The branch, v4-23-stable has been updated
       via  821a247710e VERSION: Disable GIT_SNAPSHOT for the 4.23.1 release.
       via  c14e283a695 WHATSNEW: Add release notes for Samba 4.23.1.
       via  35e59dcfd27 ctdb-common: Only respect CTDB_SOCKET in CTDB_TEST_MODE
       via  d20797de97f ctdb-common: Factor out checking of CTDB_TEST_MODE
       via  95b2c73d46f ctdb-pmda: Do not directly support CTDB_SOCKET environment variable
       via  7e144282251 Fix crash in DLZ plugin for incorrect setup
       via  73f3f2a56eb vfs_ceph_new: Use integer value instead of boolean
       via  ee5660600a4 vfs_ceph_new: dont use ceph_ll_nonblocking_readv_writev for fsync_send
       via  babc0c7cb60 winbind: Initialize idmap in winbindd_getgroups
       via  3749bc3dda3 ctdb: Fix redefinitoin of pmdaResult
       via  c01bad23a82 WHATSNEW: fix typo
       via  19d0be0ba2d VERSION: Bump version up to Samba 4.23.1...
      from  942092eadf5 VERSION: Disable GIT_SNAPSHOT for the 4.23.0 release.

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-23-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                               |  2 +-
 WHATSNEW.txt                          | 58 ++++++++++++++++++++++++++++++++++-
 ctdb/common/path.c                    | 35 +++++++++++++++------
 ctdb/server/ctdbd.c                   |  7 +++++
 ctdb/tests/README                     | 10 +++++-
 ctdb/utils/pmda/pmda_ctdb.c           | 15 ++++-----
 selftest/target/Samba.pm              |  1 +
 selftest/target/Samba3.pm             |  1 +
 source3/modules/vfs_ceph_new.c        | 12 +-------
 source3/winbindd/winbindd_getgroups.c | 29 ++++++++++++++++--
 source4/dns_server/dlz_bind9.c        | 13 +++++---
 11 files changed, 146 insertions(+), 37 deletions(-)


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index ec498854233..bc19a03b7e2 100644
--- a/VERSION
+++ b/VERSION
@@ -27,7 +27,7 @@ SAMBA_COPYRIGHT_STRING="Copyright Andrew Tridgell and the Samba Team 1992-2025"
 ########################################################
 SAMBA_VERSION_MAJOR=4
 SAMBA_VERSION_MINOR=23
-SAMBA_VERSION_RELEASE=0
+SAMBA_VERSION_RELEASE=1
 
 ########################################################
 # If a official release has a serious bug              #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 106646c6f0e..0546513b94f 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,10 +1,66 @@
+                   ==============================
+                   Release Notes for Samba 4.23.1
+                         September 26, 2025
+                   ==============================
+
+
+This is the latest stable release of the Samba 4.23 release series.
+
+
+Changes since 4.23.0
+--------------------
+
+o  Alexander Bokovoy <ab at samba.org>
+   * BUG 15920: Incomplete bind configuration causes DLZ plugin to crash.
+
+o  Volker Lendecke <vl at samba.org>
+   * BUG 15914: winbind can crash at startup.
+
+o  Anoop C S <anoopcs at samba.org>
+   * BUG 15919: vfs_ceph_new should not use ceph_ll_nonblocking_readv_writev for
+     fsync_send.
+
+o  Andreas Schneider <asn at samba.org>
+   * BUG 15904: CTDB does not support PCP 7.0.0.
+
+o  Martin Schwenke <mschwenke at ddn.com>
+   * BUG 15921: CTDB_SOCKET can be used even when CTDB_TEST_MODE is not set.
+
+o  Shachar Sharon <ssharon at redhat.com>
+   * BUG 15919: vfs_ceph_new should not use ceph_ll_nonblocking_readv_writev for
+     fsync_send.
+
+
+#######################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical:matrix.org matrix room, or
+#samba-technical IRC channel on irc.libera.chat.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored.  All bug reports should
+be filed under the Samba 4.1 and newer product in the project's Bugzilla
+database (https://bugzilla.samba.org/).
+
+
+======================================================================
+== Our Code, Our Bugs, Our Responsibility.
+== The Samba Team
+======================================================================
+
+
+Release notes for older releases follow:
+----------------------------------------
                    ==============================
                    Release Notes for Samba 4.23.0
                          September 12, 2025
                    ==============================
 
 
-This is the first stable release of the Samba 4.22 release series.
+This is the first stable release of the Samba 4.23 release series.
 Please read the release notes carefully before upgrading.
 
 
diff --git a/ctdb/common/path.c b/ctdb/common/path.c
index ea3b08f4b2e..0d935429460 100644
--- a/ctdb/common/path.c
+++ b/ctdb/common/path.c
@@ -45,16 +45,30 @@ struct {
 	.vardir = CTDB_VARDIR,
 };
 
-static void path_set_basedir(void)
+static void path_set_test_mode(void)
 {
-	const char *t;
-
+	const char *t = NULL;
+
+	/*
+	 * Do not use CTDB_TEST_MODE outside a test environment to
+	 * attempt to (for example) improve installation flexibility.
+	 * This is unsupported, may cause unwanted security issues and
+	 * may break in future releases.
+	 */
 	t = getenv("CTDB_TEST_MODE");
 	if (t == NULL) {
-		goto done;
+		return;
 	}
 
 	ctdb_paths.test_mode = true;
+}
+
+static void path_set_basedir(void)
+{
+	path_set_test_mode();
+	if (!ctdb_paths.test_mode) {
+		goto done;
+	}
 
 	ctdb_paths.basedir = getenv("CTDB_BASE");
 	if (ctdb_paths.basedir == NULL) {
@@ -188,11 +202,14 @@ char *path_config(TALLOC_CTX *mem_ctx)
 
 char *path_socket(TALLOC_CTX *mem_ctx, const char *daemon)
 {
-	if (strcmp(daemon, "ctdbd") == 0) {
-		const char *t = getenv("CTDB_SOCKET");
-
-		if (t != NULL) {
-			return talloc_strdup(mem_ctx, t);
+	path_set_test_mode();
+	if (ctdb_paths.test_mode) {
+		if (strcmp(daemon, "ctdbd") == 0) {
+			const char *t = getenv("CTDB_SOCKET");
+
+			if (t != NULL) {
+				return talloc_strdup(mem_ctx, t);
+			}
 		}
 	}
 
diff --git a/ctdb/server/ctdbd.c b/ctdb/server/ctdbd.c
index 0c55ef50b0e..d4cfe341275 100644
--- a/ctdb/server/ctdbd.c
+++ b/ctdb/server/ctdbd.c
@@ -241,6 +241,13 @@ int main(int argc, const char *argv[])
 	 * Logging setup/options
 	 */
 
+
+	/*
+	 * Do not use CTDB_TEST_MODE outside a test environment to
+	 * attempt to (for example) improve installation flexibility.
+	 * This is unsupported, may cause unwanted security issues and
+	 * may break in future releases.
+	 */
 	test_mode = getenv("CTDB_TEST_MODE");
 
 	/* Log to stderr (ignoring configuration) when running as interactive */
diff --git a/ctdb/tests/README b/ctdb/tests/README
index 80f3311b684..8a243c21703 100644
--- a/ctdb/tests/README
+++ b/ctdb/tests/README
@@ -98,7 +98,7 @@ Test and debugging variable options
 	   PID file relative to CTDB_BASE.
 
 	   When testing with multiple local daemons on a single
-	   machine this does 3 extra things:
+	   machine this does some extra things:
 
 	   * Disables checks related to public IP addresses
 
@@ -107,6 +107,14 @@ Test and debugging variable options
 
 	   * Disables real-time scheduling
 
+	   * Allows the CTDB_SOCKET environment variable to be used to
+	     specify ctdbd's Unix domain socket location.
+
+	   Do not use this variable outside a test environment to
+	   attempt to (for example) improve installation flexibility.
+	   This is unsupported, may cause unwanted security issues and
+	   may break in future releases.
+
        CTDB_DEBUG_HUNG_SCRIPT_LOGFILE=FILENAME
 	   FILENAME specifies where log messages should go when
 	   debugging hung eventscripts. This is a testing option. See
diff --git a/ctdb/utils/pmda/pmda_ctdb.c b/ctdb/utils/pmda/pmda_ctdb.c
index 9845f26defb..edf6ffc136b 100644
--- a/ctdb/utils/pmda/pmda_ctdb.c
+++ b/ctdb/utils/pmda/pmda_ctdb.c
@@ -28,6 +28,8 @@
 #include "lib/util/time.h"
 #include "lib/util/blocking.h"
 
+#include "common/path.h"
+
 #include "client/client.h"
 #include "client/client_sync.h"
 
@@ -48,7 +50,7 @@
 #define pmSetProgname(a)	__pmSetProgname(a)
 #endif
 
-#ifdef HAVE_STRUCT_PMRESULT
+#if !defined(pmdaResult) && defined(HAVE_STRUCT_PMRESULT)
 #define pmdaResult pmResult
 #endif
 
@@ -58,9 +60,7 @@
  * CTDB PMDA
  *
  * This PMDA connects to the locally running ctdbd daemon and pulls
- * statistics for export via PCP. The ctdbd Unix domain socket path can be
- * specified with the CTDB_SOCKET environment variable, otherwise the default
- * path is used.
+ * statistics for export via PCP.
  */
 
 /*
@@ -200,7 +200,7 @@ pmda_ctdb_disconnected(void *args)
 static int
 pmda_ctdb_daemon_connect(void)
 {
-	const char *socket_name;
+	char *socket_name = NULL;
 	int ret;
 
 	ev = tevent_context_init(NULL);
@@ -209,9 +209,9 @@ pmda_ctdb_daemon_connect(void)
 		return -1;
 	}
 
-	socket_name = getenv("CTDB_SOCKET");
+	socket_name = path_socket(ev, "ctdbd");
 	if (socket_name == NULL) {
-		socket_name = CTDB_SOCKET;
+		goto err_ev;
 	}
 
 	ret = ctdb_client_init(ev, ev, socket_name, &client);
@@ -224,6 +224,7 @@ pmda_ctdb_daemon_connect(void)
 	ctdb_client_set_disconnect_callback(client, pmda_ctdb_disconnected,
 					    NULL);
 
+	talloc_free(socket_name);
 	return 0;
 
 err_ev:
diff --git a/selftest/target/Samba.pm b/selftest/target/Samba.pm
index 5fc856f7886..7edac506560 100644
--- a/selftest/target/Samba.pm
+++ b/selftest/target/Samba.pm
@@ -1017,6 +1017,7 @@ my @exported_envvars = (
 	"RESOLV_WRAPPER_HOSTS",
 
 	# ctdb stuff
+	"CTDB_TEST_MODE",
 	"CTDB_PREFIX",
 	"NUM_NODES",
 	"CTDB_BASE",
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index a9efd07b0e4..6ea64ff3525 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -4322,6 +4322,7 @@ sub provision_ctdb($$$$)
 		$ret{"CTDB_IFACE_IP_NODE${i}"} = $ip;
 	}
 
+	$ret{CTDB_TEST_MODE} = "yes";
 	$ret{CTDB_BASE} = $ret{CTDB_BASE_NODE0};
 	$ret{CTDB_SOCKET} = $ret{CTDB_SOCKET_NODE0};
 	$ret{CTDB_SERVER_NAME} = $ret{CTDB_SERVER_NAME_NODE0};
diff --git a/source3/modules/vfs_ceph_new.c b/source3/modules/vfs_ceph_new.c
index 996edc73458..3cd7cb8cb4e 100644
--- a/source3/modules/vfs_ceph_new.c
+++ b/source3/modules/vfs_ceph_new.c
@@ -3019,18 +3019,8 @@ static struct tevent_req *vfs_ceph_fsync_send(struct vfs_handle_struct *handle,
 	SMBPROFILE_BYTES_ASYNC_SET_IDLE_X(state->profile_bytes,
 					  state->profile_bytes_x);
 
-#if HAVE_CEPH_ASYNCIO
-	state->req = req;
-	state->data = NULL;
-	state->len = 0;
-	state->off = 0;
-	state->fsync = true;
-	vfs_ceph_aio_submit(handle, req, ev);
-	return req;
-#endif
-
 	vfs_ceph_aio_start(state);
-	ret = vfs_ceph_ll_fsync(handle, state->cfh, false);
+	ret = vfs_ceph_ll_fsync(handle, state->cfh, 0);
 	vfs_ceph_aio_finish(state, ret);
 	if (ret != 0) {
 		/* ceph_fsync returns -errno on error. */
diff --git a/source3/winbindd/winbindd_getgroups.c b/source3/winbindd/winbindd_getgroups.c
index 26933d9d788..2308da20ed3 100644
--- a/source3/winbindd/winbindd_getgroups.c
+++ b/source3/winbindd/winbindd_getgroups.c
@@ -38,6 +38,7 @@ struct winbindd_getgroups_state {
 	gid_t *gids;
 };
 
+static void winbindd_getgroups_idmap_initialized(struct tevent_req *subreq);
 static void winbindd_getgroups_lookupname_done(struct tevent_req *subreq);
 static void winbindd_getgroups_gettoken_done(struct tevent_req *subreq);
 static void winbindd_getgroups_sid2gid_done(struct tevent_req *subreq);
@@ -72,16 +73,40 @@ struct tevent_req *winbindd_getgroups_send(TALLOC_CTX *mem_ctx,
 		return tevent_req_post(req, ev);
 	}
 
+	subreq = wb_parent_idmap_setup_send(state, state->ev);
+	if (tevent_req_nomem(subreq, req)) {
+		return tevent_req_post(req, ev);
+	}
+	tevent_req_set_callback(subreq,
+				winbindd_getgroups_idmap_initialized,
+				req);
+	return req;
+}
+
+static void winbindd_getgroups_idmap_initialized(struct tevent_req *subreq)
+{
+	struct tevent_req *req = tevent_req_callback_data(subreq,
+							  struct tevent_req);
+	struct winbindd_getgroups_state *state = tevent_req_data(
+		req, struct winbindd_getgroups_state);
+	const struct wb_parent_idmap_config *cfg = NULL;
+	NTSTATUS status;
+
+	status = wb_parent_idmap_setup_recv(subreq, &cfg);
+	TALLOC_FREE(subreq);
+	if (tevent_req_nterror(req, status)) {
+		return;
+	}
+
 	subreq = dcerpc_wbint_NormalizeNameUnmap_send(state,
 						      state->ev,
 						      idmap_child_handle(),
 						      state->request_name,
 						      &state->unmapped_name);
 	if (tevent_req_nomem(subreq, req)) {
-		return tevent_req_post(req, ev);
+		return;
 	}
 	tevent_req_set_callback(subreq, winbindd_getgroups_unmap_done, req);
-	return req;
 }
 
 static void winbindd_getgroups_unmap_done(struct tevent_req *subreq)
diff --git a/source4/dns_server/dlz_bind9.c b/source4/dns_server/dlz_bind9.c
index e5c9679835e..2a2430caba2 100644
--- a/source4/dns_server/dlz_bind9.c
+++ b/source4/dns_server/dlz_bind9.c
@@ -671,6 +671,9 @@ _PUBLIC_ isc_result_t dlz_create(const char *dlzname,
 	}
 	va_end(ap);
 
+	/* starting from here, we can only use state->log() until
+	 * dlz_bind9_state is assigned */
+
 	/* Do not install samba signal handlers */
 	fault_setup_disable();
 
@@ -727,11 +730,11 @@ _PUBLIC_ isc_result_t dlz_create(const char *dlzname,
 		}
 
 		if (!file_exist(state->options.url)) {
-			dlz_bind9_state->log(ISC_LOG_ERROR,
-					     "samba_dlz: dlz_create could not find '%s'; "
-					     "trying old location '%s/dns/sam.ldb' instead",
-					     state->options.url,
-					     lpcfg_private_dir(state->lp));
+			state->log(ISC_LOG_ERROR,
+				   "samba_dlz: dlz_create could not find '%s'; "
+				   "trying old location '%s/dns/sam.ldb' instead",
+				   state->options.url,
+				   lpcfg_private_dir(state->lp));
 			state->options.url = talloc_asprintf(state,
 							     "%s/dns/sam.ldb",
 							     lpcfg_private_dir(state->lp));


-- 
Samba Shared Repository



More information about the samba-cvs mailing list