summaryrefslogtreecommitdiff
path: root/source3/registry
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2011-09-30 15:42:31 +0200
committerMichael Adam <obnox@samba.org>2011-10-12 03:49:05 +0200
commit240d6217dd4d75a69b3f57f9668aa81ed042a6cf (patch)
tree020df6077a11e06efc18c54b53b34210cfe93045 /source3/registry
parent9d688cd7be2d21af1f881a3e65549bff03619c46 (diff)
downloadsamba-240d6217dd4d75a69b3f57f9668aa81ed042a6cf.tar.gz
samba-240d6217dd4d75a69b3f57f9668aa81ed042a6cf.tar.bz2
samba-240d6217dd4d75a69b3f57f9668aa81ed042a6cf.zip
s3:registry: improve regdb_create_subkey_internal() to always complete incomlete keys
Originally, this function did not create the key's subkey list record if only the record was listed in the subkeylist of its parent key. Now this is fixed. Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
Diffstat (limited to 'source3/registry')
-rw-r--r--source3/registry/reg_backend_db.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c
index 64c466db81..fad6c08b5e 100644
--- a/source3/registry/reg_backend_db.c
+++ b/source3/registry/reg_backend_db.c
@@ -1298,8 +1298,18 @@ static WERROR regdb_create_subkey_internal(struct db_context *db,
W_ERROR_NOT_OK_GOTO_DONE(werr);
if (regsubkey_ctr_key_exists(subkeys, subkey)) {
- werr = WERR_OK;
- goto done;
+ char *newkey;
+
+ newkey = talloc_asprintf(mem_ctx, "%s\\%s", key, subkey);
+ if (newkey == NULL) {
+ werr = WERR_NOMEM;
+ goto done;
+ }
+
+ if (regdb_key_exists(db, newkey)) {
+ werr = WERR_OK;
+ goto done;
+ }
}
talloc_free(subkeys);