diff options
Diffstat (limited to 'lib/ldb')
-rw-r--r-- | lib/ldb/common/ldb_modules.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/ldb/common/ldb_modules.c b/lib/ldb/common/ldb_modules.c index 3dd0438c128..25551e1a2ed 100644 --- a/lib/ldb/common/ldb_modules.c +++ b/lib/ldb/common/ldb_modules.c @@ -280,7 +280,17 @@ int ldb_register_module(const struct ldb_module_ops *ops) if (ldb_find_module_ops(ops->name) != NULL) return LDB_ERR_ENTRY_ALREADY_EXISTS; - entry = talloc(talloc_autofree_context(), struct ops_list_entry); + /* + * ldb modules are not (yet) unloaded and + * are only loaded once (the above check + * makes sure of this). Allocate off the NULL + * context. We never want this to be freed + * until process shutdown. If eventually we + * want to unload ldb modules we can add a + * deregister function that walks and + * frees the list. + */ + entry = talloc(NULL, struct ops_list_entry); if (entry == NULL) { return LDB_ERR_OPERATIONS_ERROR; } |