From 086c1e96b412688691639e89eb6cb947710eedb0 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 23 Apr 2012 15:47:33 +0200 Subject: [PATCH 1/1] s3:registry: convert reg_openkey() to use talloc instead of SMB_STRDUP etc (cherry picked from commit 42dd99d85ca04c10691f78d6340c6b702ade974b) --- source3/registry/reg_api.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/source3/registry/reg_api.c b/source3/registry/reg_api.c index 592f4e3ab0a..bfc7aec35d1 100644 --- a/source3/registry/reg_api.c +++ b/source3/registry/reg_api.c @@ -259,13 +259,15 @@ WERROR reg_openkey(TALLOC_CTX *mem_ctx, struct registry_key *parent, { struct registry_key *direct_parent = parent; WERROR err; - char *p, *path, *to_free; + char *p, *path; size_t len; + TALLOC_CTX *frame = talloc_stackframe(); - if (!(path = SMB_STRDUP(name))) { - return WERR_NOMEM; + path = talloc_strdup(frame, name); + if (path == NULL) { + err = WERR_NOMEM; + goto error; } - to_free = path; len = strlen(path); @@ -277,22 +279,19 @@ WERROR reg_openkey(TALLOC_CTX *mem_ctx, struct registry_key *parent, char *name_component; struct registry_key *tmp; - if (!(name_component = SMB_STRNDUP(path, (p - path)))) { + name_component = talloc_strndup(frame, path, (p - path)); + if (name_component == NULL) { err = WERR_NOMEM; goto error; } - err = regkey_open_onelevel(mem_ctx, direct_parent, + err = regkey_open_onelevel(frame, direct_parent, name_component, parent->token, KEY_ENUMERATE_SUB_KEYS, &tmp); - SAFE_FREE(name_component); if (!W_ERROR_IS_OK(err)) { goto error; } - if (direct_parent != parent) { - TALLOC_FREE(direct_parent); - } direct_parent = tmp; path = p+1; @@ -300,11 +299,9 @@ WERROR reg_openkey(TALLOC_CTX *mem_ctx, struct registry_key *parent, err = regkey_open_onelevel(mem_ctx, direct_parent, path, parent->token, desired_access, pkey); - error: - if (direct_parent != parent) { - TALLOC_FREE(direct_parent); - } - SAFE_FREE(to_free); + +error: + talloc_free(frame); return err; } -- 2.34.1