]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib: Avoid DEBUGADDs in debug_lock_order()
authorVolker Lendecke <vl@samba.org>
Tue, 3 Feb 2026 17:58:06 +0000 (18:58 +0100)
committerAnoop C S <anoopcs@samba.org>
Sun, 15 Feb 2026 10:42:34 +0000 (10:42 +0000)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Anoop C S <anoopcs@samba.org>
lib/dbwrap/dbwrap.c

index 19f6c29b069db53cc0e3c1dccb31d1779dc2582c..c4a6ed52864f44ea1229b94626a148b924723401 100644 (file)
@@ -151,17 +151,24 @@ dbwrap_merge_dbs(struct db_context *to, struct db_context *from, int flags)
 
 const char *locked_dbs[DBWRAP_LOCK_ORDER_MAX];
 
-static void debug_lock_order(int level)
+static const char *lock_order_dbg(void)
 {
        int i;
-       DEBUG(level, ("lock order:"));
-       for (i=0; i<DBWRAP_LOCK_ORDER_MAX; i++) {
-               DEBUGADD(level,
-                        (" %d:%s",
-                         i + 1,
-                         locked_dbs[i] ? locked_dbs[i] : "<none>"));
+       char *msg = talloc_strdup(talloc_tos(), "lock order:");
+
+       for (i = 0; i < DBWRAP_LOCK_ORDER_MAX; i++) {
+               talloc_asprintf_addbuf(
+                       &msg,
+                       " %d:%s",
+                       i + 1,
+                       locked_dbs[i] != NULL ? locked_dbs[i] : "<none>");
+       }
+
+       if (msg == NULL) {
+               return "lock order: <out of memory>\n";
        }
-       DEBUGADD(level, ("\n"));
+
+       return msg;
 }
 
 void dbwrap_lock_order_lock(const char *db_name,
@@ -183,19 +190,19 @@ void dbwrap_lock_order_lock(const char *db_name,
        for (idx=lock_order-1; idx<DBWRAP_LOCK_ORDER_MAX; idx++) {
                if (locked_dbs[idx] != NULL) {
                        DBG_ERR("Lock order violation: Trying %s at %d while "
-                               "%s at %d is locked\n",
+                               "%s at %d is locked\n%s\n",
                                db_name,
                                (int)lock_order,
                                locked_dbs[idx],
-                               idx + 1);
-                       debug_lock_order(0);
+                               idx + 1,
+                               lock_order_dbg());
                        smb_panic("lock order violation");
                }
        }
 
        locked_dbs[lock_order-1] = db_name;
 
-       debug_lock_order(10);
+       DBG_DEBUG("%s\n", lock_order_dbg());
 }
 
 void dbwrap_lock_order_unlock(const char *db_name,