[1167] in Kerberos-V5-bugs

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

krb5b4pl3: various programs shouldn't call krb5_os_localaddr unnecessarily

daemon@ATHENA.MIT.EDU (Jonathan I. Kamens)
Tue Mar 14 14:07:00 1995

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

Since the functions that take address lists now default to the local
host's addresses when a null list is passed in, the programs in the
distribution which call those functions no longer have to do
krb5_os_localaddr themselves.

The patch below fixes this in kinit, kprop, kpropd and kdc5_hammer.

--- clients/kinit/kinit.c	1995/03/09 18:04:32	1.1
+++ clients/kinit/kinit.c	1995/03/09 18:05:40	1.2
@@ -77,7 +77,6 @@
     int options = KRB5_DEFAULT_OPTIONS;
     int option;
     int errflg = 0;
-    krb5_address **my_addresses;
     krb5_error_code code;
     krb5_principal me;
     krb5_principal server;
@@ -236,11 +235,6 @@
 
     my_creds.server = server;
 
-    code = krb5_os_localaddr(&my_addresses);
-    if (code != 0) {
-	com_err (argv[0], code, "when getting my address");
-	exit(1);
-    }
     if (code = krb5_timeofday(&now)) {
 	com_err(argv[0], code, "while getting time of day");
 	exit(1);
@@ -263,12 +257,11 @@
 	      fprintf(stderr, "Error while reading password for '%s'\n",
 		      client_name);
 	      memset(password, 0, sizeof(password));
-	      krb5_free_addresses(my_addresses);
 	      exit(1);
 	 }
 
 	 if (preauth_type > 0) {
-	     code = krb5_get_in_tkt_with_password(options, my_addresses,
+	     code = krb5_get_in_tkt_with_password(options, 0,
 						  preauth_type,
 						  ETYPE_DES_CBC_CRC,
 						  KEYTYPE_DES,
@@ -277,7 +270,7 @@
 						  &my_creds, 0);
 	 } else {
 	     for (i=0; preauth_search_list[i] >= 0; i++) {
-		 code = krb5_get_in_tkt_with_password(options, my_addresses,
+		 code = krb5_get_in_tkt_with_password(options, 0,
 						      preauth_search_list[i],
 						      ETYPE_DES_CBC_CRC,
 						      KEYTYPE_DES,
@@ -302,14 +295,14 @@
 	 }
 
 	 if (preauth_type > 0) {
-	     code = krb5_get_in_tkt_with_skey(options, my_addresses,
+	     code = krb5_get_in_tkt_with_skey(options, 0,
 					      preauth_type, 
 					      ETYPE_DES_CBC_CRC,
 					      keytab ? &kt_ent.key : NULL,
 					      ccache, &my_creds, 0);
 	 } else {
 	     for (i=0; preauth_search_list[i] >= 0; i++) {
-		 code = krb5_get_in_tkt_with_skey(options, my_addresses,
+		 code = krb5_get_in_tkt_with_skey(options, 0,
 						  preauth_search_list[i], 
 						  ETYPE_DES_CBC_CRC,
 						  keytab ? &kt_ent.key : NULL,
@@ -325,7 +318,6 @@
     }
     
     krb5_free_principal(server);
-    krb5_free_addresses(my_addresses);
     
     if (code) {
 	if (code == KRB5KRB_AP_ERR_BAD_INTEGRITY)
--- slave/kprop.c	1995/03/13 20:53:16	1.3
+++ slave/kprop.c	1995/03/13 20:54:41	1.4
@@ -176,7 +176,6 @@
 void get_tickets()
 {
 	char   buf[BUFSIZ];
-	krb5_address **my_addresses;
 	krb5_error_code retval;
 	static char tkstring[] = "/tmp/kproptktXXXXXX";
 
@@ -252,13 +251,7 @@
 	/*
 	 * Get my addresses
 	 */
-	retval = krb5_os_localaddr(&my_addresses);
-	if (retval != 0) {
-		com_err(progname, retval,
-			"when getting my address");
-		exit(1);
-	}
-	retval = krb5_get_in_tkt_with_skey(0, my_addresses,
+	retval = krb5_get_in_tkt_with_skey(0, 0,
 					   0,
 					   ETYPE_DES_CBC_CRC,
 					   0, ccache, &my_creds, 0);
--- slave/kpropd.c	1995/03/13 21:55:57	1.9
+++ slave/kpropd.c	1995/03/13 21:57:40	1.10
@@ -73,7 +73,6 @@
 krb5_principal	server;		/* This is our server principal name */
 krb5_principal	client;		/* This is who we're talking to */
 krb5_keyblock	*session_key;	/* Here is the session key */
-krb5_address	**server_addrs;
 krb5_pointer	kerb_keytab = 0; /* Use default */
 char	*realm = NULL;		/* Our realm */
 char	*file = KPROPD_DEFAULT_FILE;
@@ -437,11 +436,6 @@
 				"while setting realm of service principal");
 			exit(1);
 		}
-	}
-	if (retval = krb5_os_localaddr(&server_addrs)) {
-		com_err(progname, retval,
-			"While trying to get local server address");
-		exit(1);
 	}
 	/*
 	 * Construct the name of the temporary file.
--- tests/hammer/kdc5_hammer.c	1995/03/09 18:16:25	1.1
+++ tests/hammer/kdc5_hammer.c	1995/03/09 18:17:07	1.2
@@ -365,7 +365,6 @@
     char *cache_name = NULL;		/* -f option */
     long lifetime = KRB5_DEFAULT_LIFE;	/* -l option */
     int options = KRB5_DEFAULT_OPTIONS;
-    krb5_address **my_addresses;
     krb5_error_code code;
     krb5_creds my_creds;
     krb5_timestamp start;
@@ -399,12 +398,6 @@
 	return(-1);
     }
 
-    code = krb5_os_localaddr(&my_addresses);
-    if (code != 0) {
-	com_err (prog, code, "when getting my address");
-	exit(1);
-    }
-
     my_creds.client = *p_client;
     my_creds.server = tgt_server;
 
@@ -422,7 +415,7 @@
     my_creds.times.endtime = start + lifetime;
     my_creds.times.renew_till = 0;
 
-    code = krb5_get_in_tkt_with_password(options, my_addresses,
+    code = krb5_get_in_tkt_with_password(options, 0,
 					 patype,
 					 etype,
 					 keytype,
@@ -431,7 +424,6 @@
 					 &my_creds, 0);
     my_creds.server = my_creds.client = 0;
     krb5_free_principal(tgt_server);
-    krb5_free_addresses(my_addresses);
     krb5_free_cred_contents(&my_creds);
     if (code != 0) {
 	com_err (prog, code, "while getting initial credentials");

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