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

Reply via email to