[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2685-g956bc60

Günther Deschner gd at samba.org
Sat Mar 1 00:04:20 GMT 2008


The branch, v3-2-test has been updated
       via  956bc602062825493e1c357e2388fee1e5514b50 (commit)
      from  2bd3b7d474768f842921945d283eac10da2a1684 (commit)

http://gitweb.samba.org/?samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 956bc602062825493e1c357e2388fee1e5514b50
Author: Günther Deschner <gd at samba.org>
Date:   Sat Mar 1 00:32:36 2008 +0100

    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

-----------------------------------------------------------------------

Summary of changes:
 source/registry/reg_backend_db.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/registry/reg_backend_db.c b/source/registry/reg_backend_db.c
index 52e0fd4..518078a 100644
--- a/source/registry/reg_backend_db.c
+++ b/source/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,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list