diff options
author | Günther Deschner <gd@samba.org> | 2008-03-01 00:32:36 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2008-03-01 01:02:15 +0100 |
commit | 87222d3f11ee4b9ca62d5d66f48772d85dbc7f84 (patch) | |
tree | 031a0fc63ed576f6b3a312bd40d7c85ced5b455d | |
parent | 5e0d86c4076f9b04a2c79ab47b497924248050aa (diff) | |
download | samba-87222d3f11ee4b9ca62d5d66f48772d85dbc7f84.tar.gz samba-87222d3f11ee4b9ca62d5d66f48772d85dbc7f84.tar.bz2 samba-87222d3f11ee4b9ca62d5d66f48772d85dbc7f84.zip |
Fix init_registry_data for subkeyless top-level keys.
On a fresh install with no existing registry.tdb, make sure we are able to
create our initial top-level entries.
Michael, Volker, please check.
Guenther
(This used to be commit 956bc602062825493e1c357e2388fee1e5514b50)
-rw-r--r-- | source3/registry/reg_backend_db.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c index 52e0fd4289..518078a062 100644 --- a/source3/registry/reg_backend_db.c +++ b/source3/registry/reg_backend_db.c @@ -454,7 +454,8 @@ bool regdb_store_keys(const char *key, REGSUBKEY_CTR *ctr) regdb_fetch_keys(key, old_subkeys); - if (ctr->num_subkeys == old_subkeys->num_subkeys) { + if ((ctr->num_subkeys && old_subkeys->num_subkeys) && + (ctr->num_subkeys == old_subkeys->num_subkeys)) { for (i = 0; i<ctr->num_subkeys; i++) { if (strcmp(ctr->subkeys[i], @@ -550,6 +551,22 @@ bool regdb_store_keys(const char *key, REGSUBKEY_CTR *ctr) /* now create records for any subkeys that don't already exist */ num_subkeys = regsubkey_ctr_numkeys(ctr); + + if (num_subkeys == 0) { + if (!(subkeys = TALLOC_ZERO_P(ctr, REGSUBKEY_CTR)) ) { + DEBUG(0,("regdb_store_keys: talloc() failure!\n")); + goto fail; + } + + if (!regdb_store_keys_internal(key, subkeys)) { + DEBUG(0,("regdb_store_keys: Failed to store " + "new record for key [%s]\n", key)); + goto fail; + } + TALLOC_FREE(subkeys); + + } + for (i=0; i<num_subkeys; i++) { path = talloc_asprintf(ctx, "%s/%s", key, |