registry: check for existence of key in regdb_get_secdesc() before proceeding.
[kai/samba.git] / source3 / registry / reg_init_full.c
index f171949e38df9492481357b70de85438c9dd7b5c..91e55d76b24f3d77594893e724ea283896caf466 100644 (file)
@@ -62,32 +62,31 @@ REGISTRY_HOOK reg_hooks[] = {
  with all available backens.
  ***********************************************************************/
 
-bool init_registry( void )
+WERROR registry_init_full(void)
 {
        int i;
-       bool ret = false;
+       WERROR werr;
 
-       if ( !regdb_init() ) {
-               DEBUG(0, ("init_registry: failed to initialize the registry "
-                         "tdb!\n"));
+       werr = registry_init_common();
+       if (!W_ERROR_IS_OK(werr)) {
                goto fail;
        }
 
        /* setup the necessary keys and values */
 
-       if ( !init_registry_data() ) {
-               DEBUG(0, ("regdb_init: Failed to initialize data in "
-                         "registry!\n"));
+       werr = init_registry_data();
+       if (!W_ERROR_IS_OK(werr)) {
+               DEBUG(0, ("Failed to initialize data in registry!\n"));
                goto fail;
        }
 
        /* build the cache tree of registry hooks */
 
-       reghook_cache_init();
-
        for ( i=0; reg_hooks[i].keyname; i++ ) {
-               if (!reghook_cache_add(reg_hooks[i].keyname, reg_hooks[i].ops))
+               werr = reghook_cache_add(reg_hooks[i].keyname, reg_hooks[i].ops);
+               if (!W_ERROR_IS_OK(werr)) {
                        goto fail;
+               }
        }
 
        if ( DEBUGLEVEL >= 20 )
@@ -99,10 +98,8 @@ bool init_registry( void )
        eventlog_init_keys();
        perfcount_init_keys();
 
-       ret = true;
-
 fail:
        /* close and let each smbd open up as necessary */
        regdb_close();
-       return ret;
+       return werr;
 }