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 <[email protected]>
+ * BUG 15920: Incomplete bind configuration causes DLZ plugin to crash.
+
+o Volker Lendecke <[email protected]>
+ * BUG 15914: winbind can crash at startup.
+
+o Anoop C S <[email protected]>
+ * BUG 15919: vfs_ceph_new should not use ceph_ll_nonblocking_readv_writev
for
+ fsync_send.
+
+o Andreas Schneider <[email protected]>
+ * BUG 15904: CTDB does not support PCP 7.0.0.
+
+o Martin Schwenke <[email protected]>
+ * BUG 15921: CTDB_SOCKET can be used even when CTDB_TEST_MODE is not set.
+
+o Shachar Sharon <[email protected]>
+ * 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