[95] in Zephyr_Bugs
Re: Authentication using a remote realm
daemon@ATHENA.MIT.EDU (marc@ATHENA.MIT.EDU)
Sat Aug 25 00:14:10 1990
From: marc@ATHENA.MIT.EDU
To: Derek Atkins <warlord@MIT.EDU>
Cc: bug-zephyr@MIT.EDU, warlord@MIT.EDU
In-Reply-To: [94] in Zephyr_Bugs
Reply-To: marc@MIT.EDU
Date: Sat, 25 Aug 90 00:13:34 EDT
The problem is not in the hostmanager, it's in the library. And
here's a proposed fix. code in /mit/zephyr/tba/marc/lib/ZGetSender.c.
Who wants to audit it? It's been tested on the vax with WATCH.MIT.EDU
realm tickets and it works fine.
*** lib/ZGetSender.c Fri Aug 24 22:46:52 1990
--- ../../src/lib/ZGetSender.c Tue Jun 28 10:34:45 1988
***************
*** 28,34 ****
{
struct passwd *pw;
#ifdef KERBEROS
! char pname[ANAME_SZ], pinst[INST_SZ], prealm[REALM_SZ];
static char sender[ANAME_SZ+INST_SZ+REALM_SZ+3] = "";
#else
static char sender[128] = "";
--- 28,34 ----
{
struct passwd *pw;
#ifdef KERBEROS
! char pname[ANAME_SZ], pinst[INST_SZ];
static char sender[ANAME_SZ+INST_SZ+REALM_SZ+3] = "";
#else
static char sender[128] = "";
***************
*** 39,48 ****
return (sender);
#ifdef KERBEROS
! if (krb_get_tf_fullname((char *)TKT_FILE,pname,pinst,prealm) == KSUCCESS)
{
! (void) sprintf(sender, "%s%s%s@%s", pname, (pinst[0]?".":""),
! pinst, prealm);
! return (sender);
}
#endif KERBEROS
--- 39,53 ----
return (sender);
#ifdef KERBEROS
! if (tf_init((char *)TKT_FILE, R_TKT_FIL) == KSUCCESS) {
! if ((tf_get_pname(pname) == KSUCCESS) &&
! (tf_get_pinst(pinst) == KSUCCESS)) {
! (void) sprintf(sender, "%s%s%s@%s", pname, (pinst[0]?".":""),
! pinst, __Zephyr_realm);
! tf_close();
! return (sender);
! }
! tf_close();
}
#endif KERBEROS