[1167] in Kerberos-V5-bugs
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");