summaryrefslogtreecommitdiff
path: root/source3/registry
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2011-08-25 17:18:12 +0200
committerMichael Adam <obnox@samba.org>2011-08-25 23:55:06 +0200
commitb1a94b66cc25153be3a8db1d640b4b760219a04b (patch)
treea1a2b80a00d022eccec8a3e4add2e1c8b6337f95 /source3/registry
parent48f08011e56664bf91570499d38e5e4d39e8ed38 (diff)
downloadsamba-b1a94b66cc25153be3a8db1d640b4b760219a04b.tar.gz
samba-b1a94b66cc25153be3a8db1d640b4b760219a04b.tar.bz2
samba-b1a94b66cc25153be3a8db1d640b4b760219a04b.zip
s3:registry: hand db context in to v2_to_v3 upgrade code via private_data
This also fixes the earlier faulty handing in of a useless stackframe memory context via private_data.
Diffstat (limited to 'source3/registry')
-rw-r--r--source3/registry/reg_backend_db.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c
index 4ca4a79cb8..7c4cca117f 100644
--- a/source3/registry/reg_backend_db.c
+++ b/source3/registry/reg_backend_db.c
@@ -464,11 +464,18 @@ static int regdb_upgrade_v2_to_v3_fn(struct db_record *rec, void *private_data)
uint32_t buflen, len;
uint32_t num_items;
uint32_t i;
+ struct db_context *db = (struct db_context *)private_data;
if (rec->key.dptr == NULL || rec->key.dsize == 0) {
return 0;
}
+ if (db == NULL) {
+ DEBUG(0, ("regdb_normalize_keynames_fn: ERROR: "
+ "NULL db context handed in via private_data\n"));
+ return 1;
+ }
+
keyname = (const char *)rec->key.dptr;
if (strncmp(keyname, REG_SORTED_SUBKEYS_PREFIX,
@@ -522,7 +529,7 @@ static int regdb_upgrade_v2_to_v3_fn(struct db_record *rec, void *private_data)
DEBUG(10, ("regdb_upgrade_v2_to_v3: "
"writing subkey list for [%s\\%s]\n",
keyname, subkeyname));
- werr = regdb_store_subkey_list(regdb, keyname, subkeyname);
+ werr = regdb_store_subkey_list(db, keyname, subkeyname);
if (!W_ERROR_IS_OK(werr)) {
return 1;
}
@@ -535,9 +542,8 @@ static WERROR regdb_upgrade_v2_to_v3(struct db_context *db)
{
int rc;
WERROR werr;
- TALLOC_CTX *frame = talloc_stackframe();
- rc = regdb->traverse(db, regdb_upgrade_v2_to_v3_fn, frame);
+ rc = regdb->traverse(db, regdb_upgrade_v2_to_v3_fn, db);
if (rc < 0) {
werr = WERR_REG_IO_FAILURE;
goto done;
@@ -546,7 +552,6 @@ static WERROR regdb_upgrade_v2_to_v3(struct db_context *db)
werr = regdb_store_regdb_version(db, REGVER_V3);
done:
- talloc_free(frame);
return werr;
}