summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/registry/regf.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/source4/lib/registry/regf.c b/source4/lib/registry/regf.c
index 544dbb0b1cd..8495e53b1b2 100644
--- a/source4/lib/registry/regf.c
+++ b/source4/lib/registry/regf.c
@@ -1720,18 +1720,21 @@ static WERROR regf_del_key(TALLOC_CTX *mem_ctx, const struct hive_key *parent,
}
if (key->nk->subkeys_offset != -1) {
- char *sk_name;
struct hive_key *sk = (struct hive_key *)key;
unsigned int i = key->nk->num_subkeys;
while (i--) {
+ char *sk_name;
+ const char *p = NULL;
+
/* Get subkey information. */
error = regf_get_subkey_by_index(parent_nk, sk, 0,
- (const char **)&sk_name,
+ &p,
NULL, NULL);
if (!W_ERROR_IS_OK(error)) {
DEBUG(0, ("Can't retrieve subkey by index.\n"));
return error;
}
+ sk_name = discard_const_p(char, p);
/* Delete subkey. */
error = regf_del_key(NULL, sk, sk_name);
@@ -1745,19 +1748,22 @@ static WERROR regf_del_key(TALLOC_CTX *mem_ctx, const struct hive_key *parent,
}
if (key->nk->values_offset != -1) {
- char *val_name;
struct hive_key *sk = (struct hive_key *)key;
DATA_BLOB data;
unsigned int i = key->nk->num_values;
while (i--) {
+ char *val_name;
+ const char *p = NULL;
+
/* Get value information. */
error = regf_get_value(parent_nk, sk, 0,
- (const char **)&val_name,
+ &p,
NULL, &data);
if (!W_ERROR_IS_OK(error)) {
DEBUG(0, ("Can't retrieve value by index.\n"));
return error;
}
+ val_name = discard_const_p(char, p);
/* Delete value. */
error = regf_del_value(NULL, sk, val_name);