int main(int argc, char **argv) { struct hdb_dbinfo *info, *d; krb5_context context; int ret, o = 0; setprogname(argv[0]); if(getarg(args, num_args, argc, argv, &o)) krb5_std_usage(1, args, num_args); if(help_flag) krb5_std_usage(0, args, num_args); if(version_flag){ print_version(NULL); exit(0); } ret = krb5_init_context(&context); if (ret) errx (1, "krb5_init_context failed: %d", ret); ret = hdb_get_dbinfo(context, &info); if (ret) krb5_err(context, 1, ret, "hdb_get_dbinfo"); d = NULL; while ((d = hdb_dbinfo_get_next(info, d)) != NULL) { const char *s; s = hdb_dbinfo_get_label(context, d); printf("label: %s\n", s ? s : "no label"); s = hdb_dbinfo_get_realm(context, d); printf("\trealm: %s\n", s ? s : "no realm"); s = hdb_dbinfo_get_dbname(context, d); printf("\tdbname: %s\n", s ? s : "no dbname"); s = hdb_dbinfo_get_mkey_file(context, d); printf("\tmkey_file: %s\n", s ? s : "no mkey file"); s = hdb_dbinfo_get_acl_file(context, d); printf("\tacl_file: %s\n", s ? s : "no acl file"); } hdb_free_dbinfo(context, &info); krb5_free_context(context); return 0; }
krb5_error_code krb5_kdc_set_dbinfo(krb5_context context, struct krb5_kdc_configuration *c) { struct hdb_dbinfo *info, *d; krb5_error_code ret; int i; /* fetch the databases */ ret = hdb_get_dbinfo(context, &info); if (ret) return ret; d = NULL; while ((d = hdb_dbinfo_get_next(info, d)) != NULL) { ret = add_db(context, c, hdb_dbinfo_get_dbname(context, d), hdb_dbinfo_get_mkey_file(context, d)); if (ret) goto out; kdc_log(context, c, 0, "label: %s", hdb_dbinfo_get_label(context, d)); kdc_log(context, c, 0, "\tdbname: %s", hdb_dbinfo_get_dbname(context, d)); kdc_log(context, c, 0, "\tmkey_file: %s", hdb_dbinfo_get_mkey_file(context, d)); kdc_log(context, c, 0, "\tacl_file: %s", hdb_dbinfo_get_acl_file(context, d)); } hdb_free_dbinfo(context, &info); return 0; out: for (i = 0; i < c->num_db; i++) if (c->db[i] && c->db[i]->hdb_destroy) (*c->db[i]->hdb_destroy)(context, c->db[i]); c->num_db = 0; free(c->db); c->db = NULL; hdb_free_dbinfo(context, &info); return ret; }