]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ldb_wrap: Provide a way to avoid Samba using ldb_wrap()
authorAndrew Bartlett <abartlet@samba.org>
Wed, 29 May 2024 23:23:01 +0000 (11:23 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 10 Jun 2024 04:27:30 +0000 (04:27 +0000)
ldb_wrap is a caching mechansim, and it should probably be removed
but for now provide a way to avoid it in specific cases where we
know it is harmful.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jo Sutton <josutton@catalyst.net.nz>
lib/ldb/include/ldb.h
source4/dsdb/samdb/samdb.c
source4/dsdb/samdb/samdb.h

index 0a93b5601807b9c7bd3ab31768e76292d015dc1f..f29392ad4ea7816314cc4bfa6abddc3375c3b180 100644 (file)
@@ -273,6 +273,12 @@ enum ldb_debug_level {LDB_DEBUG_FATAL, LDB_DEBUG_ERROR,
 */
 #define LDB_FLG_DONT_CREATE_DB 64
 
+/**
+ * Allow DB create time flags that have meaning only to our
+ * calling application or modules.  These must be in this range:
+ */
+#define LDB_FLG_PRIVATE_MASK 0xff000000
+
 /*
    structures for ldb_parse_tree handling code
 */
index 42375a8437ba58154388581bfebde98dacb49724..cbcafeb44d244677b5bb9a8e110d68164488b342 100644 (file)
@@ -116,7 +116,12 @@ int samdb_connect_url(TALLOC_CTX *mem_ctx,
                *ldb_ret = ldb;
                return LDB_SUCCESS;
        }
-               
+
+       if (flags & SAMBA_LDB_WRAP_CONNECT_FLAG_NO_SHARE_CONTEXT) {
+               *ldb_ret = ldb;
+               return LDB_SUCCESS;
+       }
+
        if (!ldb_wrap_add(url, ev_ctx, lp_ctx, session_info, NULL, flags, ldb)) {
                *errstring = talloc_asprintf(mem_ctx,
                                             "Failed to add cached DB reference"
index 3b62b60c52fa8e6f05c5592f680c69a9debf31ba..ec07cae6ad3204631ef3c8d2378b982235631dc4 100644 (file)
@@ -435,4 +435,6 @@ struct dsdb_encrypted_connection_state {
  */
 #define SAMBA_LMDB_LEVEL_ONE_FEATURE "lmdbLevelOne"
 
+#define SAMBA_LDB_WRAP_CONNECT_FLAG_NO_SHARE_CONTEXT 0x01000000
+
 #endif /* __SAMDB_H__ */