summaryrefslogtreecommitdiffstats
path: root/crypto/heimdal/lib/kadm5/init_c.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/lib/kadm5/init_c.c')
-rw-r--r--crypto/heimdal/lib/kadm5/init_c.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/crypto/heimdal/lib/kadm5/init_c.c b/crypto/heimdal/lib/kadm5/init_c.c
index c7236b6..0ed1df1 100644
--- a/crypto/heimdal/lib/kadm5/init_c.c
+++ b/crypto/heimdal/lib/kadm5/init_c.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 - 2002 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -37,7 +37,7 @@
#include <netinet/in.h>
#include <netdb.h>
-RCSID("$Id: init_c.c,v 1.44 2002/06/16 15:13:25 nectar Exp $");
+RCSID("$Id: init_c.c,v 1.45 2003/04/01 15:06:41 lha Exp $");
static void
set_funcs(kadm5_client_context *c)
@@ -335,6 +335,7 @@ kadm_connect(kadm5_client_context *ctx)
int error;
char portstr[NI_MAXSERV];
char *hostname, *slash;
+ char *service_name;
krb5_context context = ctx->context;
memset (&hints, 0, sizeof(hints));
@@ -377,7 +378,20 @@ kadm_connect(kadm5_client_context *ctx)
close(s);
return ret;
}
- ret = krb5_parse_name(context, KADM5_ADMIN_SERVICE, &server);
+
+ if (ctx->realm)
+ asprintf(&service_name, "%s@%s", KADM5_ADMIN_SERVICE, ctx->realm);
+ else
+ asprintf(&service_name, "%s", KADM5_ADMIN_SERVICE);
+
+ if (service_name == NULL) {
+ freeaddrinfo (ai);
+ close(s);
+ return ENOMEM;
+ }
+
+ ret = krb5_parse_name(context, service_name, &server);
+ free(service_name);
if(ret) {
freeaddrinfo (ai);
if(ctx->ccache == NULL)
OpenPOWER on IntegriCloud