[1148] in Kerberos-V5-bugs

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

krb5b4pl3: admin server should have a default port if service not found

daemon@ATHENA.MIT.EDU (Jonathan I. Kamens)
Tue Mar 14 09:34:47 1995

From: "Jonathan I. Kamens" <jik@cam.ov.com>
Date: Tue, 14 Mar 1995 09:37:58 -0500
To: krb5-bugs@MIT.EDU

If the kerberos-adm service can't be found in /etc/services, the admin
server should use a default port number like the other Kerberos
applications which now have default port numbers hard-coded.

The admin clients should do the same, but I'll leave that as an
exercise to the reader :-).

Here are patches to make the server use a default port:

--- include/krb5/adm_defs.h	1995/03/14 14:32:41	1.1
+++ include/krb5/adm_defs.h	1995/03/14 14:33:14
@@ -31,6 +31,7 @@
 #define ADM5_VERSIZE		strlen(ADM5_VERSTR)
 /* This used to be kerberos_master */
 #define ADM5_PORTNAME		"kerberos-adm"
+#define ADM5_DEFAULT_PORT	752
 #define ADM5_CPW_VERSION	"V5CPWS01"
 #define ADM5_ADM_VERSION	"V5ADMS01"
 #define CPWNAME			"kadmin"
--- kadmin/server/adm_network.c	1995/03/14 14:33:21	1.1
+++ kadmin/server/adm_network.c	1995/03/14 14:35:54
@@ -213,19 +213,25 @@
 
     service_servent = getservbyname(adm5_tcp_portname, "tcp");
 
-    if (!service_servent) {
+    if (service_servent) {
+	client_server_info.server_name.sin_port = service_servent->s_port;
+#ifdef DEBUG
+	fprintf(stderr, "Official service name = %s\n", service_servent->s_name);
+#endif	/* DEBUG */
+    }
+    else {
+#ifdef ADM5_DEFAULT_PORT
+	client_server_info.server_name.sin_port = htons(ADM5_DEFAULT_PORT);
+	com_err("setup_network", 0, "adm_network: using default port %d",
+		ADM5_DEFAULT_PORT);
+#else
         krb5_free_principal(client_server_info.server);
         free(client_server_info.name_of_service);
 	com_err("setup_network", 0, "adm_network: %s/tcp service unknown", 
 			adm5_tcp_portname);
 	return(1);
+#endif
     }
-
-#ifdef DEBUG
-    fprintf(stderr, "Official service name = %s\n", service_servent->s_name);
-#endif	/* DEBUG */
-
-    client_server_info.server_name.sin_port =  service_servent->s_port;
 
     if ((client_server_info.server_socket = 
 		socket(AF_INET, SOCK_STREAM, 0)) < 0) {

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