diff options
author | Volker Lendecke <vl@samba.org> | 2008-06-17 16:06:42 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2008-06-17 16:16:32 +0200 |
commit | 2dc66cb5813ef138ccea70fd7b9c9599a893e33a (patch) | |
tree | 3e44d39bd54baa60b4bee8d2aba6ab2313e0194a | |
parent | e41d7aa1d5bacf4ed95fb4a6be801db0aa1b15dd (diff) | |
download | samba-2dc66cb5813ef138ccea70fd7b9c9599a893e33a.tar.gz |
Fix a memleak in svcctl_init_keys()
(cherry picked from commit 675bb53398ba29c53d2dcf3c7122cf4770c2f938)
-rw-r--r-- | source/services/services_db.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/services/services_db.c b/source/services/services_db.c index 620b0369326..ae9fe1aeb7c 100644 --- a/source/services/services_db.c +++ b/source/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 */ |