summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2010-09-20 04:12:42 +0200
committerMichael Adam <obnox@samba.org>2010-09-21 06:53:30 +0200
commit4fc2b5c40e63579c2fe4e95bdbaa31108f2b3475 (patch)
tree50372a6f56225d4a741e52775b9a6330a4b5bf9e
parent9bfd587358fb58b98dd0fbdd72069430a89cefc7 (diff)
downloadsamba-4fc2b5c40e63579c2fe4e95bdbaa31108f2b3475.tar.gz
samba-4fc2b5c40e63579c2fe4e95bdbaa31108f2b3475.tar.bz2
samba-4fc2b5c40e63579c2fe4e95bdbaa31108f2b3475.zip
s3:services_db: use temp talloc ctx in svcctl_get_secdesc()
-rw-r--r--source3/services/services_db.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/source3/services/services_db.c b/source3/services/services_db.c
index baac9d90d5..1ebaa77aa0 100644
--- a/source3/services/services_db.c
+++ b/source3/services/services_db.c
@@ -521,14 +521,17 @@ struct security_descriptor *svcctl_get_secdesc( TALLOC_CTX *ctx, const char *nam
char *path= NULL;
WERROR wresult;
NTSTATUS status;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
/* now add the security descriptor */
- if (asprintf(&path, "%s\\%s\\%s", KEY_SERVICES, name, "Security") < 0) {
- return NULL;
+ path = talloc_asprintf(mem_ctx, "%s\\%s\\%s", KEY_SERVICES, name,
+ "Security");
+ if (path == NULL) {
+ goto done;
}
- wresult = regkey_open_internal( NULL, &key, path, token,
- REG_KEY_ALL );
+
+ wresult = regkey_open_internal(mem_ctx, &key, path, token, REG_KEY_ALL);
if ( !W_ERROR_IS_OK(wresult) ) {
DEBUG(0,("svcctl_get_secdesc: key lookup failed! [%s] (%s)\n",
path, win_errstr(wresult)));
@@ -565,8 +568,7 @@ fallback_to_default_sd:
ret_sd = construct_service_sd(ctx);
done:
- SAFE_FREE(path);
- TALLOC_FREE(key);
+ talloc_free(mem_ctx);
return ret_sd;
}