home *** CD-ROM | disk | FTP | other *** search
- From: eps@toaster.SFSU.EDU (Eric P. Scott)
- Newsgroups: alt.sources
- Subject: [next] Re: Interpretation of carriage returns
- Message-ID: <11957@stag.math.lsa.umich.edu>
- Date: 8 May 90 22:05:54 GMT
-
- Archive-name: unregistered/08-May-90
- Original-posting-by: eps@toaster.SFSU.EDU (Eric P. Scott)
- Original-subject: Re: Interpretation of carriage returns
- Reposted-by: emv@math.lsa.umich.edu (Edward Vielmetti)
-
- [This is an experimental alt.sources re-posting from the newsgroup(s)
- comp.sys.next. Comments on this service to emv@math.lsa.umich.edu
- (Edward Vielmetti).]
-
-
- In article <90128.025215CMH117@psuvm.psu.edu> CMH117@psuvm.psu.edu
- (Charles Hannum) writes:
- >If I log on the console of the NeXT and load a Terminal or Shell, carriage
- >returns seem to be interpreted as :M. But if I log in remotely, they are
- >interpreted as :J, which breaks nice things like tn3270.
- >
- >Could someone please tell me why?
-
- This is a BUG in telnetd. This is a BUG in the original 4.3 BSD
- telnetd that Berkeley fixed long ago.
-
- There are two replacements: one is the telnetd from the 4.3-tahoe
- distribution. It corrects this problem (and a few others), but
- still dates from Berkeley's Lousy Code Era (i.e. you have to
- compile with -fwritable-strings etc.). The 90.03.01 is the new
- "clean" version, which fixes some grave omissions, and adds some
- really nifty functionality. It also comes with source patches to
- the kernel. A lot of good that does me. :-(
-
- I can only hope that NeXT looks kindly on its Internet customers
- in the future and bundles the kernel support necessary for
- traceroute, SLIP, RARP, linemode... Their competitors WILL (if
- they don't already).
-
- -=EPS=-
- P.S. Having sources to things like telnetd and ftpd is essential
- if you want to add local security hacks, e.g.
-
- /*
- * Copyright 1990 by Eric P. Scott <eps@cs.sfsu.edu>
- * Redistribution permitted as long as this notice is retained.
- */
- void unregistered(f, srca) /* call if gethostbyaddr() fails */
- int f;
- struct in_addr srca;
- {
- char *index();
- extern char *sys_errlist[];
- struct arpreq ar;
- char buf[BUFSIZ];
-
- bzero((char *)&ar, sizeof ar);
- ar.arp_pa.sa_family=AF_INET;
- ((struct sockaddr_in *)&ar.arp_pa)->sin_addr.s_addr=srca.s_addr;
- if (ioctl(f, SIOCGARP, (caddr_t)&ar)<0) {
- if (errno==ENXIO)
- (void)sprintf(buf, "Access denied to %s\r\n\
- Get your Zone Administrator to fix your nameservers.\r\n",
- inet_ntoa(srca));
- else (void)sprintf(buf, "telnetd: %s SIOCGARP error: %s\r\n",
- inet_ntoa(srca), sys_errlist[errno]);
- }
- else {
- if ((ar.arp_flags&ATF_COM)==0) /* should never happen */
- (void)sprintf(buf, "telnetd: %s (not complete)\r\n",
- inet_ntoa(srca));
- else (void)sprintf(buf, /* unauthorized Ethernet tap */
- "Access denied to %s at %02X:%02X:%02X:%02X:%02X:%02X\
- \r\nPlease contact contact campus Network Support for assistance.\r\n",
- inet_ntoa(srca),
- ar.arp_ha.sa_data[0]&255,
- ar.arp_ha.sa_data[1]&255,
- ar.arp_ha.sa_data[2]&255,
- ar.arp_ha.sa_data[3]&255,
- ar.arp_ha.sa_data[4]&255,
- ar.arp_ha.sa_data[5]&255);
- }
- (void)write(f, buf, strlen(buf));
- if (buf[0]!='A') return;
- *index(buf, '\r')='\0';
- syslog(LOG_NOTICE, "%s\n", buf); /* if syslogd worked */
- sleep(5);
- exit(1);
- }
-