[1206] in Kerberos-V5-bugs
krb5b4pl3: slave/kpropd.c: use krb5_sname_to_principal
daemon@ATHENA.MIT.EDU (Jonathan I. Kamens)
Sun Mar 19 21:09:40 1995
From: "Jonathan I. Kamens" <jik@cam.ov.com>
Date: Sun, 19 Mar 1995 21:01:01 -0500
To: krb5-bugs@MIT.EDU
Like kprop, kpropd should use krb5_sname_to_principal instead of
duplicating its efforts. Patch:
--- slave/kpropd.c 1995/03/13 21:21:49 1.3
+++ slave/kpropd.c 1995/03/13 21:24:36 1.4
@@ -336,9 +336,6 @@
char **argv;
{
register char *word, ch;
- char *cp;
- struct hostent *hp;
- char my_host_name[MAXHOSTNAMELEN], buf[BUFSIZ];
krb5_error_code retval;
static const char tmp[] = ".temp";
@@ -418,28 +415,22 @@
set_com_err_hook(kpropd_com_err_proc);
}
/*
- * Get my hostname, so we can construct my service name
+ * Construct my service name
*/
- if (gethostname (my_host_name, sizeof(my_host_name)) != 0) {
- com_err(progname, errno, "while getting my hostname");
+ if (retval = krb5_sname_to_principal(0, KPROP_SERVICE_NAME,
+ KRB5_NT_SRV_HST, &server)) {
+ com_err(progname, retval, "while getting service principal");
exit(1);
}
- if (!(hp = gethostbyname(my_host_name))) {
- fprintf(stderr, "Couldn't get my cannonicalized host name!\n");
- exit(1);
- }
- for (cp=hp->h_name; *cp; cp++)
- if (isupper(*cp))
- *cp = tolower(*cp);
- if (realm)
- sprintf(buf, "%s/%s@%s", KPROP_SERVICE_NAME, hp->h_name,
- realm);
- else
- sprintf(buf, "%s/%s", KPROP_SERVICE_NAME, hp->h_name);
- if (retval = krb5_parse_name(buf, &server)) {
- com_err(progname, retval,
- "While trying to parse %s for service name");
- exit(1);
+ if (realm) {
+ krb5_xfree(krb5_princ_realm(server)->data);
+ krb5_princ_set_realm_length(server, strlen(realm));
+ krb5_princ_set_realm_data(server, strdup(realm));
+ if (! krb5_princ_realm(server)->data) {
+ com_err(progname, ENOMEM,
+ "while setting realm of service principal");
+ exit(1);
+ }
}
if (retval = krb5_os_localaddr(&server_addrs)) {
com_err(progname, retval,