[comp.protocols.kerberos] fix for rlogin window size bugs

pst@ack.Stanford.EDU (Paul Traina) (08/29/90)

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();