summaryrefslogtreecommitdiff
path: root/source4/lib/registry/reg_samba.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2006-09-16 16:59:37 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:18:52 -0500
commit655b710204e7a7d8e486da7ba675fcbeed116fea (patch)
tree30a4c72758cd1526ce79a1f1c289c4159dba3578 /source4/lib/registry/reg_samba.c
parentd01bbe68424da9fd0c67d2dc383f13a8ede8ac78 (diff)
downloadsamba-655b710204e7a7d8e486da7ba675fcbeed116fea.tar.gz
samba-655b710204e7a7d8e486da7ba675fcbeed116fea.tar.bz2
samba-655b710204e7a7d8e486da7ba675fcbeed116fea.zip
r18584: found one of the fd leaks. The registry backend was using a
talloc(NULL, xxx) to allocate the registry context. That had two consequences 1) it was a massive memory leak, as all winreg operations leaked their entire context (including an open ldb database) every time 2) event_context_find() never found the exsting event context, so we used a new event context each time, which called epoll_create() each time, which caused a fd to be allocated (This used to be commit 1c0a3de39828b43149d8981fc7f10e7c8b59a392)
Diffstat (limited to 'source4/lib/registry/reg_samba.c')
-rw-r--r--source4/lib/registry/reg_samba.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/source4/lib/registry/reg_samba.c b/source4/lib/registry/reg_samba.c
index 4a88d96042..3553c4cb6d 100644
--- a/source4/lib/registry/reg_samba.c
+++ b/source4/lib/registry/reg_samba.c
@@ -68,9 +68,12 @@ static WERROR reg_samba_get_predef (struct registry_context *ctx, uint32_t hkey,
return error;
}
-_PUBLIC_ WERROR reg_open_local (struct registry_context **ctx, struct auth_session_info *session_info, struct cli_credentials *credentials)
+_PUBLIC_ WERROR reg_open_local (TALLOC_CTX *mem_ctx,
+ struct registry_context **ctx,
+ struct auth_session_info *session_info,
+ struct cli_credentials *credentials)
{
- *ctx = talloc(NULL, struct registry_context);
+ *ctx = talloc(mem_ctx, struct registry_context);
(*ctx)->credentials = talloc_reference(*ctx, credentials);
(*ctx)->session_info = talloc_reference(*ctx, session_info);
(*ctx)->get_predefined_key = reg_samba_get_predef;