summaryrefslogtreecommitdiff
path: root/source3/registry
diff options
context:
space:
mode:
Diffstat (limited to 'source3/registry')
-rw-r--r--source3/registry/reg_cachehook.c13
-rw-r--r--source3/registry/reg_init_basic.c7
-rw-r--r--source3/registry/reg_init_full.c7
-rw-r--r--source3/registry/reg_init_smbconf.c8
4 files changed, 26 insertions, 9 deletions
diff --git a/source3/registry/reg_cachehook.c b/source3/registry/reg_cachehook.c
index bfdc0de5f5..c7f099e134 100644
--- a/source3/registry/reg_cachehook.c
+++ b/source3/registry/reg_cachehook.c
@@ -54,18 +54,19 @@ static char *keyname_to_path(TALLOC_CTX *mem_ctx, const char *keyname)
Initialize the cache tree if it has not been initialized yet.
*********************************************************************/
-bool reghook_cache_init( void )
+WERROR reghook_cache_init(void)
{
if (cache_tree == NULL) {
cache_tree = pathtree_init(&regdb_ops, NULL);
- if (cache_tree != NULL) {
- DEBUG(10, ("reghook_cache_init: new tree with default "
- "ops %p for key [%s]\n", (void *)&regdb_ops,
- KEY_TREE_ROOT));
+ if (cache_tree == NULL) {
+ return WERR_NOMEM;
}
+ DEBUG(10, ("reghook_cache_init: new tree with default "
+ "ops %p for key [%s]\n", (void *)&regdb_ops,
+ KEY_TREE_ROOT));
}
- return (cache_tree != NULL);
+ return WERR_OK;
}
/**********************************************************************
diff --git a/source3/registry/reg_init_basic.c b/source3/registry/reg_init_basic.c
index e72765bdf2..72ab9d1e65 100644
--- a/source3/registry/reg_init_basic.c
+++ b/source3/registry/reg_init_basic.c
@@ -36,7 +36,12 @@ bool registry_init_basic(void)
}
regdb_close();
- reghook_cache_init();
+ werr = reghook_cache_init();
+ if (!W_ERROR_IS_OK(werr)) {
+ DEBUG(1, ("Failed to initialize the reghook cache: %s\n",
+ dos_errstr(werr)));
+ return false;
+ }
return true;
}
diff --git a/source3/registry/reg_init_full.c b/source3/registry/reg_init_full.c
index ac3f66f1b2..8c834c4abb 100644
--- a/source3/registry/reg_init_full.c
+++ b/source3/registry/reg_init_full.c
@@ -85,7 +85,12 @@ bool init_registry( void )
/* build the cache tree of registry hooks */
- reghook_cache_init();
+ werr = reghook_cache_init();
+ if (!W_ERROR_IS_OK(werr)) {
+ DEBUG(0, ("Failed to initialize the reghook cache: %s\n",
+ dos_errstr(werr)));
+ goto fail;
+ }
for ( i=0; reg_hooks[i].keyname; i++ ) {
if (!reghook_cache_add(reg_hooks[i].keyname, reg_hooks[i].ops))
diff --git a/source3/registry/reg_init_smbconf.c b/source3/registry/reg_init_smbconf.c
index 871141c1fd..bfc85afb22 100644
--- a/source3/registry/reg_init_smbconf.c
+++ b/source3/registry/reg_init_smbconf.c
@@ -94,7 +94,13 @@ bool registry_init_smbconf(const char *keyname)
goto done;
}
- reghook_cache_init();
+ werr = reghook_cache_init();
+ if (!W_ERROR_IS_OK(werr)) {
+ DEBUG(1, ("Failed to initialize the reghook cache: %s\n",
+ dos_errstr(werr)));
+ goto done;
+ }
+
if (!reghook_cache_add(keyname, &smbconf_reg_ops)) {
DEBUG(1, ("Failed to add smbconf reghooks to reghook cache\n"));
goto done;