From 007d16660b451e6c9eb7aae341f3802cfb3c8f49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Wed, 4 Jul 2007 10:35:45 +0000 Subject: [PATCH] Split out krb5_kdc_set_dbinfo, From Andrew Bartlett git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21405 ec53bebd-3082-4978-b11e-865c3cabbd6b --- kdc/Makefile.am | 1 + kdc/default_config.c | 62 --------------------------- kdc/set_dbinfo.c | 100 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 62 deletions(-) create mode 100644 kdc/set_dbinfo.c diff --git a/kdc/Makefile.am b/kdc/Makefile.am index 281023d22..e1c465614 100644 --- a/kdc/Makefile.am +++ b/kdc/Makefile.am @@ -31,6 +31,7 @@ libkdc_la_SOURCES = \ kdc-private.h \ kdc-protos.h \ default_config.c \ + set_dbinfo.c \ digest.c \ kdc_locl.h \ kerberos5.c \ diff --git a/kdc/default_config.c b/kdc/default_config.c index 958c09c83..6a651886d 100644 --- a/kdc/default_config.c +++ b/kdc/default_config.c @@ -38,68 +38,6 @@ RCSID("$Id$"); -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) { - void *ptr; - - ptr = realloc(c->db, (c->num_db + 1) * sizeof(*c->db)); - if (ptr == NULL) { - ret = ENOMEM; - krb5_set_error_string(context, "out of memory"); - goto out; - } - c->db = ptr; - - ret = hdb_create(context, &c->db[c->num_db], - hdb_dbinfo_get_dbname(context, d)); - if(ret) - goto out; - - ret = hdb_set_master_keyfile(context, c->db[c->num_db], - hdb_dbinfo_get_mkey_file(context, d)); - if (ret) - goto out; - - c->num_db++; - - kdc_log(context, c, 0, "label: %s", - hdb_dbinfo_get_label(context, d)); - kdc_log(context, c, 0, "\trealm: %s", - hdb_dbinfo_get_realm(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)); - } - 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; -} - - krb5_error_code krb5_kdc_get_config(krb5_context context, krb5_kdc_configuration **config) { diff --git a/kdc/set_dbinfo.c b/kdc/set_dbinfo.c new file mode 100644 index 000000000..139b89041 --- /dev/null +++ b/kdc/set_dbinfo.c @@ -0,0 +1,100 @@ +/* + * Copyright (c) 1997-2007 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "kdc_locl.h" + +RCSID("$Id: default_config.c 21296 2007-06-25 14:49:11Z lha $"); + +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) { + void *ptr; + + ptr = realloc(c->db, (c->num_db + 1) * sizeof(*c->db)); + if (ptr == NULL) { + ret = ENOMEM; + krb5_set_error_string(context, "out of memory"); + goto out; + } + c->db = ptr; + + ret = hdb_create(context, &c->db[c->num_db], + hdb_dbinfo_get_dbname(context, d)); + if(ret) + goto out; + + ret = hdb_set_master_keyfile(context, c->db[c->num_db], + hdb_dbinfo_get_mkey_file(context, d)); + if (ret) + goto out; + + c->num_db++; + + kdc_log(context, c, 0, "label: %s", + hdb_dbinfo_get_label(context, d)); + kdc_log(context, c, 0, "\trealm: %s", + hdb_dbinfo_get_realm(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)); + } + 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; +} + +