(_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
This commit is contained in:
Assar Westerlund
1999-10-03 20:14:20 +00:00
parent 050378c2b1
commit 5e05184149

View File

@@ -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;