lib/ldb: don't allow repeated connections
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Tue, 19 Mar 2024 23:18:12 +0000 (12:18 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 20 Mar 2024 23:42:34 +0000 (23:42 +0000)
In the best case, this would have leaked.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/ldb/common/ldb.c
selftest/knownfail.d/ldb-api-connect [deleted file]

index 7d3b2dc6afa5bf047f01d8f46c43631855a270ac..71a5c98a542be2f89ab81841b7d9dbaa4d28ab69 100644 (file)
@@ -243,6 +243,17 @@ int ldb_connect(struct ldb_context *ldb, const char *url,
 {
        int ret;
        char *url2;
+
+       const char *existing_url = ldb_get_opaque(ldb, "ldb_url");
+       if (existing_url != NULL) {
+               ldb_asprintf_errstring(
+                       ldb,
+                       "This LDB has already connected to '%s', and "
+                       "cannot also connect to '%s'",
+                       existing_url, url);
+               return LDB_ERR_OPERATIONS_ERROR;
+       }
+
        /* We seem to need to do this here, or else some utilities don't
         * get ldb backends */
 
diff --git a/selftest/knownfail.d/ldb-api-connect b/selftest/knownfail.d/ldb-api-connect
deleted file mode 100644 (file)
index 8f82c26..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-^ldb.python.api.*api.SimpleLdb.test_connect_twice
-^ldb.python.api.*api.SimpleLdb.test_connect_twice_later
-^ldb.python.api.*api.SimpleLdbLmdb.test_connect_twice
-^ldb.python.api.*api.SimpleLdbLmdb.test_connect_twice_later