From 99d9993fdb9cdf5ac054329ddf5e9c4f258f9049 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 6 Nov 2007 00:50:47 +0100 Subject: When deleting a key from the registry make sure the non-default security descriptor gets deleted as well. Guenther (This used to be commit d140d68537225b6a6a99be3d9b09354e3f6ad8c9) --- source3/registry/reg_api.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'source3/registry/reg_api.c') diff --git a/source3/registry/reg_api.c b/source3/registry/reg_api.c index 17a0efe007..b3d024d7b4 100644 --- a/source3/registry/reg_api.c +++ b/source3/registry/reg_api.c @@ -498,7 +498,7 @@ WERROR reg_deletekey(struct registry_key *parent, const char *path) TALLOC_CTX *mem_ctx; char *name, *end; int num_subkeys; - struct registry_key *tmp_key; + struct registry_key *tmp_key, *key; if (!(mem_ctx = talloc_init("reg_createkey"))) return WERR_NOMEM; @@ -508,14 +508,14 @@ WERROR reg_deletekey(struct registry_key *parent, const char *path) } /* check if the key has subkeys */ - err = reg_openkey(mem_ctx, parent, name, REG_KEY_READ, &tmp_key); + err = reg_openkey(mem_ctx, parent, name, REG_KEY_READ, &key); if (!W_ERROR_IS_OK(err)) { goto error; } - if (!W_ERROR_IS_OK(err = fill_subkey_cache(tmp_key))) { + if (!W_ERROR_IS_OK(err = fill_subkey_cache(key))) { goto error; } - if (tmp_key->subkeys->num_subkeys > 0) { + if (key->subkeys->num_subkeys > 0) { err = WERR_ACCESS_DENIED; goto error; } @@ -556,7 +556,10 @@ WERROR reg_deletekey(struct registry_key *parent, const char *path) goto error; } + regkey_set_secdesc(key->key, NULL); + err = WERR_OK; + error: TALLOC_FREE(mem_ctx); return err; -- cgit