summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/kadm5/clnt/ChangeLog2
-rw-r--r--src/lib/kadm5/clnt/client_init.c17
2 files changed, 17 insertions, 2 deletions
diff --git a/src/lib/kadm5/clnt/ChangeLog b/src/lib/kadm5/clnt/ChangeLog
index 358d3335a..77450813a 100644
--- a/src/lib/kadm5/clnt/ChangeLog
+++ b/src/lib/kadm5/clnt/ChangeLog
@@ -2,6 +2,8 @@
* client_init.c (_kadm5_init_any)[DEBUG]: Print error from
clnttcp_create().
+ (_kadm5_init_any): Use kadm5_get_admin_service_name() if null
+ pointer passed in for service_name.
2004-06-15 Tom Yu <tlyu@mit.edu>
diff --git a/src/lib/kadm5/clnt/client_init.c b/src/lib/kadm5/clnt/client_init.c
index b6996f975..731253165 100644
--- a/src/lib/kadm5/clnt/client_init.c
+++ b/src/lib/kadm5/clnt/client_init.c
@@ -165,6 +165,7 @@ static kadm5_ret_t _kadm5_init_any(char *client_name,
int code = 0;
generic_ret *r;
+ char svcname[MAXHOSTNAMELEN + 8];
initialize_ovk_error_table();
initialize_adb_error_table();
@@ -195,7 +196,7 @@ static kadm5_ret_t _kadm5_init_any(char *client_name,
krb5_init_context(&handle->context);
- if(service_name == NULL || client_name == NULL) {
+ if(client_name == NULL) {
free(handle);
return EINVAL;
}
@@ -268,7 +269,19 @@ static kadm5_ret_t _kadm5_init_any(char *client_name,
free(handle);
return KADM5_MISSING_KRB5_CONF_PARAMS;
}
-
+
+ /* NULL service_name means use host-based. */
+ if (service_name == NULL) {
+ code = kadm5_get_admin_service_name(handle->context,
+ handle->params.realm,
+ svcname, sizeof(svcname));
+ if (code) {
+ krb5_free_context(handle->context);
+ free(handle);
+ return KADM5_MISSING_KRB5_CONF_PARAMS;
+ }
+ service_name = svcname;
+ }
/*
* Acquire a service ticket for service_name@realm in the name of
* client_name, using password pass (which could be NULL), and