summaryrefslogtreecommitdiff
path: root/source4/lib/registry/tools
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/tools
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/tools')
-rw-r--r--source4/lib/registry/tools/regdiff.c4
-rw-r--r--source4/lib/registry/tools/regpatch.c2
-rw-r--r--source4/lib/registry/tools/regshell.c2
-rw-r--r--source4/lib/registry/tools/regtree.c2
4 files changed, 5 insertions, 5 deletions
diff --git a/source4/lib/registry/tools/regdiff.c b/source4/lib/registry/tools/regdiff.c
index dbbe555ad6..b8bf654a6b 100644
--- a/source4/lib/registry/tools/regdiff.c
+++ b/source4/lib/registry/tools/regdiff.c
@@ -54,8 +54,8 @@ int main(int argc, char **argv)
error = WERR_OK;
switch(opt) {
case 'L':
- if (!h1 && !from_null) error = reg_open_local(&h1, NULL, cmdline_credentials);
- else if (!h2) error = reg_open_local(&h2, NULL, cmdline_credentials);
+ if (!h1 && !from_null) error = reg_open_local(NULL, &h1, NULL, cmdline_credentials);
+ else if (!h2) error = reg_open_local(NULL, &h2, NULL, cmdline_credentials);
break;
case 'R':
if (!h1 && !from_null)
diff --git a/source4/lib/registry/tools/regpatch.c b/source4/lib/registry/tools/regpatch.c
index 7ed246566c..42cdac860b 100644
--- a/source4/lib/registry/tools/regpatch.c
+++ b/source4/lib/registry/tools/regpatch.c
@@ -52,7 +52,7 @@ int main(int argc, char **argv)
if (remote) {
error = reg_open_remote (&h, NULL, cmdline_credentials, remote, NULL);
} else {
- error = reg_open_local (&h, NULL, cmdline_credentials);
+ error = reg_open_local (NULL, &h, NULL, cmdline_credentials);
}
if (W_ERROR_IS_OK(error)) {
diff --git a/source4/lib/registry/tools/regshell.c b/source4/lib/registry/tools/regshell.c
index 0bc1cfe324..8436a3f505 100644
--- a/source4/lib/registry/tools/regshell.c
+++ b/source4/lib/registry/tools/regshell.c
@@ -434,7 +434,7 @@ static char **reg_completion(const char *text, int start, int end)
} else if (backend) {
error = reg_open_hive(NULL, backend, poptGetArg(pc), NULL, cmdline_credentials, &curkey);
} else {
- error = reg_open_local(&h, NULL, cmdline_credentials);
+ error = reg_open_local(NULL, &h, NULL, cmdline_credentials);
}
if(!W_ERROR_IS_OK(error)) {
diff --git a/source4/lib/registry/tools/regtree.c b/source4/lib/registry/tools/regtree.c
index 31f5a89a1b..6b3c20eae3 100644
--- a/source4/lib/registry/tools/regtree.c
+++ b/source4/lib/registry/tools/regtree.c
@@ -122,7 +122,7 @@ int main(int argc, char **argv)
return 1;
}
} else {
- error = reg_open_local (&h, NULL, cmdline_credentials);
+ error = reg_open_local (NULL, &h, NULL, cmdline_credentials);
if(!W_ERROR_IS_OK(error)) {
fprintf(stderr, "Unable to open local registry:%s \n", win_errstr(error));