[2974] in Kerberos-V5-bugs
krb5-clients/636: Linux Redhat and /etc/issus.net
daemon@ATHENA.MIT.EDU (Matthew J. Wolf)
Fri Sep 25 08:45:02 1998
Resent-From: gnats@rt-11.MIT.EDU (GNATS Management)
Resent-To: krb5-unassigned@RT-11.MIT.EDU
Resent-Reply-To: krb5-bugs@MIT.EDU, mwolf@clan.premtec.com
Date: Fri, 25 Sep 1998 08:32:57 -0400
From: "Matthew J. Wolf" <mwolf@clan.premtec.com>
Reply-To: mwolf@clan.premtec.com
To: krb5-bugs@MIT.EDU
>Number: 636
>Category: krb5-clients
>Synopsis: The displaying of /etc/issus.net at login with telnetd
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: krb5-unassigned
>State: open
>Class: change-request
>Submitter-Id: unknown
>Arrival-Date: Fri Sep 25 08:34:01 EDT 1998
>Last-Modified:
>Originator: Matthew J. Wolf
>Organization:
Premiere Communications Inc
X
>Release: krb5-1.0.5
>Environment:
RedHat Linux Ver. 5.1 /w glibc-2.0.7
System: Linux clan.premtec.com 2.0.35 #1 Thu Jul 23 14:01:04 EDT 1998 i686 unknown
Architecture: i686
>Description:
The default string than is displayed (4.4 BSD UNIX) when some one logs into a
box runinng telnetd is the string that is displayed by the normal telnetd in
Redhat Linux. I hacked ext.h and utility.c to display the contence of
/etc/issue.net with is what the normal telnetd does under Redhat Linux. I use
the source from the linux source "netkit-telnet-0.10" to make my changes.
>How-To-Repeat:
In ext.h I added another value for DEFAULT_IM .
In utility.c I added " #include <sys/utsname.h> " which was need for a
struct of type utsname and with was needed by some cases that I added to
PUTF().
>Fix:
Here are the context diffs.
*** src/appl/telnet/telnetd/ext.h.org Fri Feb 6 22:41:47 1998
--- src/appl/telnet/telnetd/ext.h Thu Sep 24 09:00:15 1998
***************
*** 223,241 ****
#ifndef DEFAULT_IM
# ifdef CRAY
# define DEFAULT_IM "\r\n\r\nCray UNICOS (%h) (%t)\r\n\r\r\n\r"
- # else
- # ifdef sun
- # ifdef __SVR4
- # define DEFAULT_IM "\r\n\r\nUNIX(r) System V Release 4.0 (%h) (%t)\r\n\r\r\n\r"
- # else
- # define DEFAULT_IM "\r\n\r\nSunOS UNIX (%h) (%t)\r\n\r\r\n\r"
- # endif
# else
! # ifdef ultrix
! # define DEFAULT_IM "\r\n\r\nULTRIX (%h) (%t)\r\n\r\r\n\r"
# else
! # define DEFAULT_IM "\r\n\r\n4.4 BSD UNIX (%h) (%t)\r\n\r\r\n\r"
! # endif
# endif
# endif
#endif
--- 223,245 ----
#ifndef DEFAULT_IM
# ifdef CRAY
# define DEFAULT_IM "\r\n\r\nCray UNICOS (%h) (%t)\r\n\r\r\n\r"
# else
! # ifdef __linux__
! # define DEFAULT_IM "%i\r\n%s %r (%h) (%t)\r\n\r\n"
! # else
! # ifdef sun
! # ifdef __SVR4
! # define DEFAULT_IM "\r\n\r\nUNIX(r) System V Release 4.0 (%h) (%t)\r\n\r\r\n\r"
! # else
! # define DEFAULT_IM "\r\n\r\nSunOS UNIX (%h) (%t)\r\n\r\r\n\r"
! # endif
# else
! # ifdef ultrix
! # define DEFAULT_IM "\r\n\r\nULTRIX (%h) (%t)\r\n\r\r\n\r"
! # else
! # define DEFAULT_IM "\r\n\r\n4.4 BSD UNIX (%h) (%t)\r\n\r\r\n\r"
! # endif
! # endif
# endif
# endif
#endif
*** src/appl/telnet/telnetd/utility.c.org Thu Sep 24 09:28:35 1998
--- src/appl/telnet/telnetd/utility.c Thu Sep 24 10:51:31 1998
***************
*** 33,40 ****
--- 33,43 ----
/* based on @(#)utility.c 8.1 (Berkeley) 6/4/93 */
+ #define ISSUE_FILE = "/etc/issue.net"
+
#define PRINTOPTIONS
#include "telnetd.h"
+ #include <sys/utsname.h>
/*
* utility functions performing io related tasks
***************
*** 374,379 ****
--- 377,383 ----
}
char editedhost[32];
+ struct utsname kerninfo;
void
edithost(pat, host)
***************
*** 476,489 ****
break;
case 'd':
! (void)time(&t);
! (void)strftime(db, sizeof(db), fmtstr, localtime(&t));
! putstr(db);
! break;
- case '%':
- putchr('%');
- break;
}
cp++;
}
--- 480,559 ----
break;
case 'd':
! (void)time(&t);
! (void)strftime(db, sizeof(db), fmtstr, localtime(&t));
! putstr(db);
! break;
!
! case '%':
! putchr('%');
! break;
!
! case 'D':
! {
! char buff[128];
!
! if (getdomainname(buff,sizeof(buff)) < 0
! || buff[0] == '\0'
! || strcmp(buff, "(none)") == 0)
! break;
! putstr(buff);
! }
! break;
!
! case 'i':
! {
! char buff[3];
! FILE *fp;
! int p, c;
!
! if ((fp = fopen("/etc/issue.net", "r")) == NULL)
! break;
! p = '\n';
! while ((c = fgetc(fp)) != EOF) {
! if (p == '\n' && c == '#') {
! do {
! c = fgetc(fp);
! } while (c != EOF && c != '\n');
! continue;
! } else if (c == '%') {
! buff[0] = c;
! c = fgetc(fp);
! if (c == EOF) break;
! buff[1] = c;
! buff[2] = '\0';
! putf(buff, NULL);
! } else {
! if (c == '\n') putchr('\r');
! putchr(c);
! p = c;
! }
! };
! (void) fclose(fp);
! }
! return; /* ignore remainder of the banner string */
!
! case 's':
! putstr(kerninfo.sysname);
! break;
!
! case 'm':
! putstr(kerninfo.machine);
! break;
!
! case 'r':
! putstr(kerninfo.release);
! break;
!
!
! case 'v':
! #ifdef __linux__
! putstr(kerninfo.version);
! #else
! puts(kerninfo.version);
! #endif
! break;
}
cp++;
}
>Audit-Trail:
>Unformatted: