{
krb5_error_code ret;
kadm5_config_params params_in, params_out;
- struct addrinfo hint, *ai = NULL;
- int err;
+ char *canonhost = NULL;
memset(¶ms_in, 0, sizeof(params_in));
memset(¶ms_out, 0, sizeof(params_out));
goto err_params;
}
- memset(&hint, 0, sizeof(hint));
- hint.ai_flags = AI_CANONNAME | AI_ADDRCONFIG;
- err = getaddrinfo(params_out.admin_server, NULL, &hint, &ai);
- if (err != 0) {
- ret = KADM5_CANT_RESOLVE;
- k5_setmsg(ctx, ret,
- _("Cannot resolve address of admin server \"%s\" for realm "
- "\"%s\""), params_out.admin_server, realm_in);
+ ret = krb5_expand_hostname(ctx, params_out.admin_server, &canonhost);
+ if (ret)
goto err_params;
- }
- if (strlen(ai->ai_canonname) + sizeof("kadmin/") > maxlen) {
+
+ if (strlen(canonhost) + sizeof("kadmin/") > maxlen) {
ret = ENOMEM;
goto err_params;
}
- snprintf(admin_name, maxlen, "kadmin/%s", ai->ai_canonname);
+ snprintf(admin_name, maxlen, "kadmin/%s", canonhost);
err_params:
- if (ai != NULL)
- freeaddrinfo(ai);
+ krb5_free_string(ctx, canonhost);
kadm5_free_config_params(ctx, ¶ms_out);
return ret;
}