summaryrefslogtreecommitdiff
path: root/source3/registry
diff options
context:
space:
mode:
Diffstat (limited to 'source3/registry')
-rw-r--r--source3/registry/reg_api.c30
-rw-r--r--source3/registry/reg_api.h6
2 files changed, 11 insertions, 25 deletions
diff --git a/source3/registry/reg_api.c b/source3/registry/reg_api.c
index 31950f75cb..a98eaf8271 100644
--- a/source3/registry/reg_api.c
+++ b/source3/registry/reg_api.c
@@ -784,22 +784,15 @@ WERROR reg_deleteallvalues(struct registry_key *key)
* Note that reg_deletekey returns ACCESS_DENIED when called on a
* key that has subkeys.
*/
-static WERROR reg_deletekey_recursive_internal(TALLOC_CTX *ctx,
- struct registry_key *parent,
+static WERROR reg_deletekey_recursive_internal(struct registry_key *parent,
const char *path,
bool del_key)
{
- TALLOC_CTX *mem_ctx = NULL;
WERROR werr = WERR_OK;
struct registry_key *key;
char *subkey_name = NULL;
uint32 i;
-
- mem_ctx = talloc_new(ctx);
- if (mem_ctx == NULL) {
- werr = WERR_NOMEM;
- goto done;
- }
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
/* recurse through subkeys first */
werr = reg_openkey(mem_ctx, parent, path, REG_KEY_ALL, &key);
@@ -816,9 +809,7 @@ static WERROR reg_deletekey_recursive_internal(TALLOC_CTX *ctx,
*/
for (i = regsubkey_ctr_numkeys(key->subkeys) ; i > 0; i--) {
subkey_name = regsubkey_ctr_specific_key(key->subkeys, i-1);
- werr = reg_deletekey_recursive_internal(mem_ctx, key,
- subkey_name,
- true);
+ werr = reg_deletekey_recursive_internal(key, subkey_name, true);
W_ERROR_NOT_OK_GOTO_DONE(werr);
}
@@ -832,8 +823,7 @@ done:
return werr;
}
-static WERROR reg_deletekey_recursive_trans(TALLOC_CTX *ctx,
- struct registry_key *parent,
+static WERROR reg_deletekey_recursive_trans(struct registry_key *parent,
const char *path,
bool del_key)
{
@@ -847,7 +837,7 @@ static WERROR reg_deletekey_recursive_trans(TALLOC_CTX *ctx,
return werr;
}
- werr = reg_deletekey_recursive_internal(ctx, parent, path, del_key);
+ werr = reg_deletekey_recursive_internal(parent, path, del_key);
if (!W_ERROR_IS_OK(werr)) {
DEBUG(1, (__location__ " failed to delete key '%s' from key "
@@ -871,17 +861,15 @@ static WERROR reg_deletekey_recursive_trans(TALLOC_CTX *ctx,
return werr;
}
-WERROR reg_deletekey_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
+WERROR reg_deletekey_recursive(struct registry_key *parent,
const char *path)
{
- return reg_deletekey_recursive_trans(ctx, parent, path, true);
+ return reg_deletekey_recursive_trans(parent, path, true);
}
-WERROR reg_deletesubkeys_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
+WERROR reg_deletesubkeys_recursive(struct registry_key *parent,
const char *path)
{
- return reg_deletekey_recursive_trans(ctx, parent, path, false);
+ return reg_deletekey_recursive_trans(parent, path, false);
}
diff --git a/source3/registry/reg_api.h b/source3/registry/reg_api.h
index 2a4f6dbbf6..41c4792e59 100644
--- a/source3/registry/reg_api.h
+++ b/source3/registry/reg_api.h
@@ -61,11 +61,9 @@ WERROR reg_setkeysecurity(struct registry_key *key,
struct security_descriptor *psecdesc);
WERROR reg_getversion(uint32_t *version);
WERROR reg_deleteallvalues(struct registry_key *key);
-WERROR reg_deletekey_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
+WERROR reg_deletekey_recursive(struct registry_key *parent,
const char *path);
-WERROR reg_deletesubkeys_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
+WERROR reg_deletesubkeys_recursive(struct registry_key *parent,
const char *path);