diff options
-rw-r--r-- | source4/lib/registry/regf.c | 14 |
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); |