diff -urN krb4-1.2.2/lib/krb/get_in_tkt.c krb4-1.2.2_new/lib/krb/get_in_tkt.c --- krb4-1.2.2/lib/krb/get_in_tkt.c Thu Aug 15 13:39:32 2002 +++ krb4-1.2.2_new/lib/krb/get_in_tkt.c Tue Mar 11 16:55:30 2003 @@ -166,7 +166,7 @@ code = tf_setup(&cred, user, instance); if (code == KSUCCESS) { if (krb_get_config_bool("nat_in_use")) - krb_add_our_ip_for_realm(user, instance, realm, password); + krb_add_our_ip_for_realm2(user, instance, realm, key); } } if (password == pword) diff -urN krb4-1.2.2/lib/krb/krb-protos.h krb4-1.2.2_new/lib/krb/krb-protos.h --- krb4-1.2.2/lib/krb/krb-protos.h Sun Aug 26 03:46:51 2001 +++ krb4-1.2.2_new/lib/krb/krb-protos.h Tue Mar 11 16:56:06 2003 @@ -807,6 +807,9 @@ krb_add_our_ip_for_realm __P((const char *user, const char *instance, const char *realm, const char *password)); +krb_add_our_ip_for_realm2 __P((const char *user, const char *instance, + const char *realm, des_cblock *key)); + void KRB_LIB_FUNCTION encrypt_ktext __P(( KTEXT cip, diff -urN krb4-1.2.2/lib/krb/krb_ip_realm.c krb4-1.2.2_new/lib/krb/krb_ip_realm.c --- krb4-1.2.2/lib/krb/krb_ip_realm.c Tue Dec 7 00:02:33 1999 +++ krb4-1.2.2_new/lib/krb/krb_ip_realm.c Tue Mar 11 16:56:35 2003 @@ -43,10 +43,9 @@ */ int -krb_add_our_ip_for_realm(const char *user, const char *instance, - const char *realm, const char *password) +krb_add_our_ip_for_realm2(const char *user, const char *instance, + const char *realm, des_cblock *key) { - des_cblock newkey; des_key_schedule schedule; char scrapbuf[1024]; struct in_addr myAddr; @@ -63,8 +62,7 @@ &c)) != KSUCCESS) return err; - des_string_to_key((char *)password, &newkey); - des_set_key(&newkey, schedule); + des_set_key(key, schedule); err = decomp_ticket(&c.ticket_st, (unsigned char *)scrapbuf, /* Flags */ scrapbuf, /* Authentication name */ @@ -77,12 +75,11 @@ (u_int32_t *)scrapbuf, /* Issue time and date */ scrapbuf, /* Service name */ scrapbuf, /* Service instance */ - &newkey, /* Secret key */ + key, /* Secret key */ schedule /* Precomp. key schedule */ ); if (err != KSUCCESS) { - memset(newkey, 0, sizeof(newkey)); memset(schedule, 0, sizeof(schedule)); return err; } @@ -91,11 +88,24 @@ err = tf_store_addr(realm, &myAddr); - memset(newkey, 0, sizeof(newkey)); memset(schedule, 0, sizeof(schedule)); return err; } + +int +krb_add_our_ip_for_realm(const char *user, const char *instance, + const char *realm, const char *password) { + int err; + des_cblock newkey; + + des_string_to_key((char *)password, &newkey); + err = krb_add_our_ip_for_realm2(user, instance, realm, &newkey); + + memset(newkey, 0, sizeof(newkey)); + + return err; +} int krb_get_our_ip_for_realm(const char *realm, struct in_addr *ip_addr)