[1206] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

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,



home help back first fref pref prev next nref lref last post