From 41b1f8a20c7db6b79706a4aebcc7074149a6ab62 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 24 Jul 2017 12:11:03 -0700 Subject: [PATCH] lib: ldb: Use NULL to allocate modules not talloc_autofree_context(). ldb modules are not (yet) unloaded and are only loaded once (there is a check that makes sure of this). Allocate off the NULL context. We never want this to be freed until process shutdown. If eventually we add the ability to unload ldb modules we can add a deregister function that walks and frees the list. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12932 Signed-off-by: Jeremy Allison Reviewed-by: Andrew Bartlett --- lib/ldb/common/ldb_modules.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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; } -- 2.34.1