* $Header$
*
* Copyright (C) 1987 by the Massachusetts Institute of Technology
+ * For copying and distribution information, please see the file
+ * <mit-copyright.h>.
*
* Utility functions for communication with the Kerberos admin_server
*
* Original version written by Jeffery I. Schiller, January 1987
* Completely gutted and rewritten by Bill Sommerfeld, August 1987
*
- * $Log$
- * Revision 1.5 1988-08-01 00:42:54 qjb
- * Changed names of kerberos calls to new names from old ones.
- *
- * Revision 1.4 87/09/09 14:59:06 wesommer
- * Allocate a new socket each time rather than keeping one around,
- * due to protocol problems.
- *
- * Revision 1.3 87/09/04 22:30:34 wesommer
- * Un-crock the KDC host (oops -- this one got distributed!!).
- *
- * Revision 1.2 87/08/22 17:13:59 wesommer
- * Make admin_errmsg external rather than static.
- * Crock up KDC host.
- *
- * Revision 1.1 87/08/07 13:50:37 wesommer
- * Initial revision
- *
*/
#ifndef lint
static char *rcsid_admin_call_c = "$Header$";
#endif lint
+#include <mit-copyright.h>
#include <sys/errno.h>
#include <sys/types.h>
#include <sys/time.h>
#include <netdb.h>
#include <strings.h>
+#include <ctype.h>
#include <stdio.h>
#include "admin_err.h"
static int my_addr_len; /* size of above address. */
static char krbrlm[REALM_SZ]; /* Local kerberos realm */
+static char krbhost[BUFSIZ]; /* Name of server for local realm */
char admin_errmsg[BUFSIZ]; /* Server error message */
/*
* Locate server.
*/
- hp = gethostbyname(KERB_HOST);
+ if (status = get_krbhst(krbhost, krbrlm, 1)) {
+ status += krb_err_base;
+ goto punt;
+ }
+ hp = gethostbyname(krbhost);
if (!hp) {
status = ADMIN_UNKNOWN_HOST;
goto punt;
bcopy((char *)hp->h_addr, (char *)&admin_addr.sin_addr, hp->h_length);
admin_addr.sin_port = sp->s_port;
+ /* lowercase & truncate hostname becuase it will be used as an
+ * instance name.
+ */
+ {
+ char *s;
+ for (s = krbhost; *s && *s != '.'; s++)
+ if (isupper(*s))
+ *s = tolower(*s);
+ *s = 0;
+ }
inited = 1;
}
return 0;
* find our session key.
*/
- if (status = krb_get_cred("changepw", "kerberos", krbrlm, &cred)) {
+ if (status = krb_get_cred("changepw", krbhost, krbrlm, &cred)) {
status += krb_err_base;
goto bad;
}
* and know who we are.
*/
- if (status = krb_mk_req(&authent, "changepw", "kerberos", krbrlm,
+ if (status = krb_mk_req(&authent, "changepw", krbhost, krbrlm,
checksum)) {
status += krb_err_base;
goto bad;