update for multi-database code

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7335 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1999-11-09 18:04:03 +00:00
parent 5ef395dc3f
commit 53e2cee457
2 changed files with 33 additions and 16 deletions

View File

@@ -59,9 +59,24 @@ main(int argc, char **argv)
configure(argc, argv); configure(argc, argv);
ret = hdb_create(context, &db, database); if(databases == NULL) {
if(ret) db = malloc(sizeof(*db));
krb5_err(context, 1, ret, "hdb_create %s", database); num_db = 1;
ret = hdb_create(context, &db[0], NULL);
if(ret)
krb5_err(context, 1, ret, "hdb_create %s", HDB_DEFAULT_DB);
} else {
char **d;
int i;
/* count databases */
for(d = databases, i = 0; *d; d++, i++);
db = malloc(i * sizeof(*db));
for(d = databases, num_db = 0; *d; d++) {
ret = hdb_create(context, &db[num_db++], *d);
if(ret)
krb5_err(context, 1, ret, "hdb_create %s", *d);
}
}
ret = hdb_set_master_keyfile(context, db, keyfile); ret = hdb_set_master_keyfile(context, db, keyfile);
if (ret) if (ret)
krb5_err(context, 1, ret, "hdb_set_master_keyfile"); krb5_err(context, 1, ret, "hdb_set_master_keyfile");

View File

@@ -47,20 +47,22 @@ db_fetch(krb5_principal principal)
{ {
hdb_entry *ent; hdb_entry *ent;
krb5_error_code ret; krb5_error_code ret;
int i;
ret = db->open(context, db, O_RDONLY, 0);
if (ret) {
kdc_log(0, "Failed to open database: %s",
krb5_get_err_text(context, ret));
return NULL;
}
ALLOC(ent); ALLOC(ent);
ent->principal = principal; ent->principal = principal;
ret = db->fetch(context, db, HDB_F_DECRYPT, ent);
db->close(context, db); for(i = 0; i < num_db; i++) {
if(ret){ ret = db[i]->open(context, db[i], O_RDONLY, 0);
free(ent); if (ret) {
return NULL; kdc_log(0, "Failed to open database: %s",
krb5_get_err_text(context, ret));
continue;
}
ret = db[i]->fetch(context, db[i], HDB_F_DECRYPT, ent);
db[i]->close(context, db[i]);
if(ret == 0)
return ent;
} }
return ent; free(ent);
return NULL;
} }