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:
		
							
								
								
									
										19
									
								
								kdc/main.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								kdc/main.c
									
									
									
									
									
								
							| @@ -59,9 +59,24 @@ main(int argc, char **argv) | |||||||
|  |  | ||||||
|     configure(argc, argv); |     configure(argc, argv); | ||||||
|  |  | ||||||
|     ret = hdb_create(context, &db, database); |     if(databases == NULL) { | ||||||
|  | 	db = malloc(sizeof(*db)); | ||||||
|  | 	num_db = 1; | ||||||
|  | 	ret = hdb_create(context, &db[0], NULL); | ||||||
| 	if(ret) | 	if(ret) | ||||||
| 	krb5_err(context, 1, ret, "hdb_create %s", database); | 	    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"); | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								kdc/misc.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								kdc/misc.c
									
									
									
									
									
								
							| @@ -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; | ||||||
|  |     ALLOC(ent); | ||||||
|  |     ent->principal = principal; | ||||||
|  |  | ||||||
|     ret = db->open(context, db, O_RDONLY, 0); |     for(i = 0; i < num_db; i++) { | ||||||
|  | 	ret = db[i]->open(context, db[i], O_RDONLY, 0); | ||||||
| 	if (ret) { | 	if (ret) { | ||||||
| 	    kdc_log(0, "Failed to open database: %s",  | 	    kdc_log(0, "Failed to open database: %s",  | ||||||
| 		    krb5_get_err_text(context, ret)); | 		    krb5_get_err_text(context, ret)); | ||||||
| 	return NULL; | 	    continue; | ||||||
|  | 	} | ||||||
|  | 	ret = db[i]->fetch(context, db[i], HDB_F_DECRYPT, ent); | ||||||
|  | 	db[i]->close(context, db[i]); | ||||||
|  | 	if(ret == 0) | ||||||
|  | 	    return ent; | ||||||
|     } |     } | ||||||
|     ALLOC(ent); |  | ||||||
|     ent->principal = principal; |  | ||||||
|     ret = db->fetch(context, db, HDB_F_DECRYPT, ent); |  | ||||||
|     db->close(context, db); |  | ||||||
|     if(ret){ |  | ||||||
|     free(ent); |     free(ent); | ||||||
|     return NULL; |     return NULL; | ||||||
| } | } | ||||||
|     return ent; |  | ||||||
| } |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Johan Danielsson
					Johan Danielsson