[3052] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

pending/702: Krb5 + CDE + Solaris = core

daemon@ATHENA.MIT.EDU (Mike Busse)
Mon Mar 15 18:00:05 1999

Resent-From: gnats@rt-11.MIT.EDU (GNATS Management)
Resent-To: gnats-admin@rt-11.MIT.EDU
Resent-Reply-To: krb5-bugs@MIT.EDU, Mike Busse <mbusse@arl.mil>
Date: Mon, 15 Mar 1999 17:54:03 -0500 (EST)
From: Mike Busse <mbusse@arl.mil>
To: krb5-bugs@MIT.EDU


>Number:         702
>Category:       pending
>Synopsis:       Krb5 + CDE + Solaris = core
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Class:          sw-bug
>Submitter-Id:   unknown
>Arrival-Date:   Mon Mar 15 18:00:00 EST 1999
>Last-Modified:
>Originator:
>Organization:
>Release:
>Environment:
>Description:
>How-To-Repeat:
>Fix:
>Audit-Trail:
>Unformatted:
Hi, 
  I thought I'd email you about a problem we had with CDE running
Solaris 2.5.1 and up, along with krb5 v1.5.  The function used in
krb5/src/appl/bsd/krlogin.c: cfgetospeed line returns an index value
of 29, where the array only goes to 16.  24 is defined in Solaris'
/usr/include/sys/termios.h.  
  The fix:

blaze /src/krb5/src/appl/bsd 5 # diff -c krlogin.c krlogin.c.orig
*** krlogin.c   Mon Mar  8 18:59:14 1999
--- krlogin.c.orig      Sat Oct 24 11:04:06 1998
***************
*** 208,223 ****
  #else
  char    *speeds[] =
  { "0", "50", "75", "110", "134", "150", "200", "300",
!     "600", "1200", "1800", "2400", "4800", "9600", "19200", "38400",
!     "57600", "76800", "115200", "153600", "230400", "307200", "460800" };
  #endif
  char  term[256] = "network";
  
- #if defined(hpux) || defined(__hpux)
  #define MAX_SPEED_LENGTH      (sizeof("38400") - 1)
- #else
- #define MAX_SPEED_LENGTH      (sizeof("460800") - 1)
- #endif /* MAX_SPEED_LENGTH */
  #define MAX_TERM_LENGTH               (sizeof(term) - 1 - MAX_SPEED_LENGTH - 1)
  
  #ifndef POSIX_SIGNALS
--- 208,218 ----
  #else
  char    *speeds[] =
  { "0", "50", "75", "110", "134", "150", "200", "300",
!     "600", "1200", "1800", "2400", "4800", "9600", "19200", "38400" };
  #endif
  char  term[256] = "network";
  
  #define MAX_SPEED_LENGTH      (sizeof("38400") - 1)
  #define MAX_TERM_LENGTH               (sizeof(term) - 1 - MAX_SPEED_LENGTH - 1)
  
  #ifndef POSIX_SIGNALS
***************
*** 527,534 ****
  #ifdef POSIX_TERMIOS
        if (tcgetattr(0, &ttyb) == 0) {
                int ospeed = cfgetospeed (&ttyb);
-                       if ( ospeed > MAX_SPEED_LENGTH )
-                               ospeed = MAX_SPEED_LENGTH;
  
                (void) strcat(term, "/");
                if (ospeed >= 50)
--- 522,527 ----

*** The most important line here is:
-                       if ( ospeed > MAX_SPEED_LENGTH )
-                               ospeed = MAX_SPEED_LENGTH;

Mike.

-----------------------------------------------------------------------------
    Michael H. Busse         Email: mbusse@arl.mil
  ARL/CICC/ARD/SAB/USAT      Vmail: 410-278-0615
Business Plus Corporation    Smail: U.S. Army Research Laboratory
      Contractor                    ATTN: AMSRL-CI-AS (M. Busse - B328, Rm15)
 #include <stddisclm.h>             Aberdeen Proving Ground, MD 21005-5067
-----------------------------------------------------------------------------


home help back first fref pref prev next nref lref last post