diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/services/services_db.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source3/services/services_db.c b/source3/services/services_db.c index 620b036932..ae9fe1aeb7 100644 --- a/source3/services/services_db.c +++ b/source3/services/services_db.c @@ -447,15 +447,22 @@ void svcctl_init_keys( void ) REGSUBKEY_CTR *subkeys; REGISTRY_KEY *key = NULL; WERROR wresult; + struct nt_user_token *token = get_root_nt_token(); + + if (token == NULL) { + DEBUG(0, ("svcctl_init_keys: get_root_nt_token failed\n")); + return; + } /* bad mojo here if the lookup failed. Should not happen */ wresult = regkey_open_internal( NULL, &key, KEY_SERVICES, - get_root_nt_token(), REG_KEY_ALL ); + token, REG_KEY_ALL ); if ( !W_ERROR_IS_OK(wresult) ) { DEBUG(0,("svcctl_init_keys: key lookup failed! (%s)\n", dos_errstr(wresult))); + TALLOC_FREE(token); return; } @@ -464,6 +471,7 @@ void svcctl_init_keys( void ) if ( !(subkeys = TALLOC_ZERO_P( key, REGSUBKEY_CTR )) ) { DEBUG(0,("svcctl_init_keys: talloc() failed!\n")); TALLOC_FREE( key ); + TALLOC_FREE(token); return; } @@ -486,6 +494,7 @@ void svcctl_init_keys( void ) } TALLOC_FREE( key ); + TALLOC_FREE(token); /* initialize the control hooks */ |