[1076] in Kerberos
fix for rlogin window size bugs
daemon@ATHENA.MIT.EDU (Paul Traina)
Tue Aug 28 16:13:31 1990
Date: 28 Aug 90 18:22:59 GMT
From: pst@ack.Stanford.EDU (Paul Traina)
To: kerberos@ATHENA.MIT.EDU
It turns out that there were two bugs in the V4 distribution of Kerberos's
rlogin program that caused window size changes to fail.
Bug #1:
Appears on all systems tested (BSD, SunOS, Ultrix).
If kerberos rlogin falls back to rlogin.ucb, window size changes (or for
that matter, window size protocol negotiation at the start) fail to
occur.
This was caused by the signal mask not being reset before the exec() of
rlogin.ucb.
Bug #2:
Appears on SunOS 4.x systems.
Window size changes (and protocol negotiation) were failing because the
F_SETOWN for the reader was being passed the wrong pid. This was due to
the transition between 4.2 and 4.3. SunOS 4.0 behaves like 4.3 and newer.
Here are patches based off the V4 PL8 distribution.
Cheers,
Paul
*** /tmp/,RCSt1a01589 Tue Aug 28 11:17:19 1990
--- rlogin.c Tue Aug 28 11:16:58 1990
***************
*** 364,371 ****
krb_err_txt[rem]);
rem = -1;
}
! if (rem == -1)
try_normal(orig_argv);
rem = sock;
#else
rem = rcmd(&host, sp->s_port,
--- 364,373 ----
krb_err_txt[rem]);
rem = -1;
}
! if (rem == -1) {
! sigsetmask(oldmask);
try_normal(orig_argv);
+ }
rem = sock;
#else
rem = rcmd(&host, sp->s_port,
***************
*** 862,868 ****
reader(oldmask)
int oldmask;
{
! #if (defined(BSD) && BSD >= 43) || defined(ultrix)
int pid = getpid();
#else
int pid = -getpid();
--- 864,870 ----
reader(oldmask)
int oldmask;
{
! #if (defined(BSD) && BSD >= 43) || defined(ultrix) || (defined(SunOS) && SunOS >= 40)
int pid = getpid();
#else
int pid = -getpid();