From 1c1fce74142f1ba982fee045cdb72938faabe5d5 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 24 Jul 2017 11:43:47 -0700 Subject: lib: rpc: The registered interfaces are a lists of singletons that are never removed. Allocate them off the NULL context not the talloc_autofree_context(). BUG: https://bugzilla.samba.org/show_bug.cgi?id=12932 Signed-off-by: Jeremy Allison Reviewed-by: Andrew Bartlett --- librpc/ndr/ndr_table.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'librpc') diff --git a/librpc/ndr/ndr_table.c b/librpc/ndr/ndr_table.c index 3dc158fa7ea..f64e5ac4d20 100644 --- a/librpc/ndr/ndr_table.c +++ b/librpc/ndr/ndr_table.c @@ -44,7 +44,17 @@ NTSTATUS ndr_table_register(const struct ndr_interface_table *table) } } - l = talloc(talloc_autofree_context(), struct ndr_interface_list); + /* + * This is a singleton instance guarenteed + * by the above check to be only added once + * into the list so we can allocate off the NULL + * context. We never want this to be freed + * until process shutdown. If needed we could + * add a deregister function that walks and + * frees the list. + */ + + l = talloc(NULL, struct ndr_interface_list); l->table = table; DLIST_ADD(ndr_interfaces, l); -- cgit v1.2.1