]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
CVE-2026-58224: ctdb-daemon: Avoid out of bounds data access
authorMartin Schwenke <mschwenke@ddn.com>
Sun, 31 May 2026 05:11:39 +0000 (15:11 +1000)
committerBjoern Jacke <bjacke@samba.org>
Tue, 28 Jul 2026 15:56:37 +0000 (15:56 +0000)
The first check is clearly needed because m->db_id is referenced.  The
second check is handled by a similar update to
ctdb_control_update_record(), but repeat it in case something else
changes.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=16085

Signed-off-by: Martin Schwenke <mschwenke@ddn.com>
Reviewed-by: Tristan Madani <tristan@talencesecurity.com>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
ctdb/server/ctdb_persistent.c

index 26717441d176bae4f98366be575c253670197515..1b0d141155325bcd86ecd25bf32bbbaa19e41906 100644 (file)
@@ -182,6 +182,16 @@ int32_t ctdb_control_trans3_commit(struct ctdb_context *ctdb,
        struct ctdb_marshall_buffer *m = (struct ctdb_marshall_buffer *)recdata.dptr;
        struct ctdb_db_context *ctdb_db;
 
+       if (recdata.dsize < offsetof(struct ctdb_marshall_buffer, data)) {
+               DBG_ERR("Invalid packet\n");
+               return -1;
+       }
+       if (m->count >
+           recdata.dsize - offsetof(struct ctdb_marshall_buffer, data)) {
+               DBG_ERR("Invalid packet\n");
+               return -1;
+       }
+
        if (ctdb->recovery_mode != CTDB_RECOVERY_NORMAL) {
                DEBUG(DEBUG_INFO,("rejecting ctdb_control_trans3_commit when recovery active\n"));
                return -1;