summaryrefslogtreecommitdiffstats
path: root/src/kadmin/cli/kadmin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kadmin/cli/kadmin.c')
-rw-r--r--src/kadmin/cli/kadmin.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/kadmin/cli/kadmin.c b/src/kadmin/cli/kadmin.c
index 3eef8529b..06d23b813 100644
--- a/src/kadmin/cli/kadmin.c
+++ b/src/kadmin/cli/kadmin.c
@@ -183,6 +183,8 @@ char *kadmin_startup(argc, argv)
krb5_ccache cc;
krb5_principal princ;
kadm5_config_params params;
+ char svcnamebuf[MAXHOSTNAMELEN + 8];
+ char *svcname;
memset((char *) &params, 0, sizeof(params));
@@ -261,6 +263,17 @@ char *kadmin_startup(argc, argv)
params.mask |= KADM5_CONFIG_REALM;
params.realm = def_realm;
+ retval = kadm5_get_admin_service_name(context, def_realm, svcnamebuf,
+ sizeof(svcnamebuf));
+ if (retval) {
+ fprintf(stderr, "%s: failed to get admin service name", whoami);
+ exit(1);
+ }
+ if (params.mask & KADM5_CONFIG_OLD_AUTH_GSSAPI)
+ svcname = KADM5_ADMIN_SERVICE;
+ else
+ svcname = svcnamebuf;
+
/*
* Set cc to an open credentials cache, either specified by the -c
* argument or the default.
@@ -404,7 +417,7 @@ char *kadmin_startup(argc, argv)
printf("Authenticating as principal %s with existing credentials.\n",
princstr);
retval = kadm5_init_with_creds(princstr, cc,
- KADM5_ADMIN_SERVICE,
+ svcname,
&params,
KADM5_STRUCT_VERSION,
KADM5_API_VERSION_2,
@@ -417,7 +430,7 @@ char *kadmin_startup(argc, argv)
printf("Authenticating as principal %s with default keytab.\n",
princstr);
retval = kadm5_init_with_skey(princstr, keytab_name,
- KADM5_ADMIN_SERVICE,
+ svcname,
&params,
KADM5_STRUCT_VERSION,
KADM5_API_VERSION_2,
@@ -426,7 +439,7 @@ char *kadmin_startup(argc, argv)
printf("Authenticating as principal %s with password.\n",
princstr);
retval = kadm5_init_with_password(princstr, password,
- KADM5_ADMIN_SERVICE,
+ svcname,
&params,
KADM5_STRUCT_VERSION,
KADM5_API_VERSION_2,