From 5e05184149e6be0fd63ed5eecdd9160a63546f42 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Sun, 3 Oct 1999 20:14:20 +0000 Subject: [PATCH] (_kadm5_c_init_context): use `krb5_get_krb_admin_hst'. check return value from strdup git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7101 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/kadm5/init_c.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/kadm5/init_c.c b/lib/kadm5/init_c.c index f67843b21..11f2243cc 100644 --- a/lib/kadm5/init_c.c +++ b/lib/kadm5/init_c.c @@ -67,6 +67,8 @@ _kadm5_c_init_context(kadm5_client_context **ctx, kadm5_config_params *params, krb5_context context) { + krb5_error_code ret; + *ctx = malloc(sizeof(**ctx)); if(*ctx == NULL) return ENOMEM; @@ -85,17 +87,17 @@ _kadm5_c_init_context(kadm5_client_context **ctx, "tcp", 749); if(params->mask & KADM5_CONFIG_ADMIN_SERVER) (*ctx)->admin_server = strdup(params->admin_server); - else{ - const char *h = krb5_config_get_string(context, - NULL, - "realms", - (*ctx)->realm, - "admin_server", - NULL); - if(h == NULL) - return KADM5_NO_SRV; /* XXX */ - (*ctx)->admin_server = strdup(h); + else { + char **hostlist; + + ret = krb5_get_krb_admin_hst (context, &(*ctx)->realm, &hostlist); + if (ret) + return ret; + (*ctx)->admin_server = strdup(*hostlist); + krb5_free_krbhst (context, hostlist); } + if ((*ctx)->admin_server == NULL) + return ENOMEM; return 0; } @@ -166,7 +168,7 @@ get_new_cache(krb5_context context, switch(ret){ case 0: break; - case KRB5KDC_ERR_NONE: /* XXX hack in krb5_get_init_creds_password */ + case KRB5_LIBOS_PWDINTR: /* don't print anything if it was just C-c:ed */ case KRB5KRB_AP_ERR_BAD_INTEGRITY: case KRB5KRB_AP_ERR_MODIFIED: return KADM5_BAD_PASSWORD;