Subject: Two bugs in NetBSD-current
To: None <netbsd-bugs@NetBSD.ORG>
From: Michael Joosten <joost@ori.cadlab.de>
List: netbsd-bugs
Date: 09/04/1995 22:25:23
(Jason: I cc'ed this to you because you announced another snapshot)

Today I wondered why cpio via /etc/rmt to remote tape host didn't work at all,
but simply gave me 'Input/Ouput Error' as soon as it allegedly started "rsh
blabla /etc/rmt". Worked when I installed 1.0, became broken in a last month's
snapshot. Turned out that execl ist broken, that is, buildargv(). The
code in GNU cpio-2.3 tries to find 'rsh' the lazy way: just execl()-ing some
paths until it hits. But with the bug in execl, execl() can only called once.
Either there is a 'static memsize' too much, or the explicit initialization of
argv must go:
*** exec.c.orig Mon Sep  4 22:04:02 1995
--- exec.c      Mon Sep  4 22:05:04 1995
***************
*** 64,74 ****
        const char *arg;
        char ***envpp;
  {
!       static size_t memsize;
        static char **argv;
        register size_t off;
  
-       argv = NULL;
        for (off = 0;; ++off) {
                if (off >= memsize) {
                        memsize += 50;  /* Starts out at 0. */
--- 64,73 ----
        const char *arg;
        char ***envpp;
  {
!       static size_t memsize = 0;
        static char **argv;
        register size_t off;
  
        for (off = 0;; ++off) {
                if (off >= memsize) {
                        memsize += 50;  /* Starts out at 0. */


Another (minor) nuisance: I brazenly dared to enable root logins via
telnet/rlogin, by just putting a 'secure on' after 
ttyp0   none                            network

But then init really believes in starting a program called 'none' and fills
the console... Not sure if this should rather be fixed in gettyent(), here is
at least a temporary fix for /sbin/init:

*** init/init.c Tue May 30 12:35:00 1995
--- init.mj/init.c      Mon Aug 28 19:25:06 1995
***************
*** 914,920 ****
  
        if ((typ->ty_status & TTY_ON) == 0 ||
            typ->ty_name == 0 ||
!           typ->ty_getty == 0)
                return 0;
  
        sp = (session_t *) malloc(sizeof (session_t));
--- 914,920 ----
  
        if ((typ->ty_status & TTY_ON) == 0 ||
            typ->ty_name == 0 ||
!           typ->ty_getty == 0 || strcmp("none", typ->ty_getty) == 0)
                return 0;
  
        sp = (session_t *) malloc(sizeof (session_t));

Ah well, a last one: While I'm used to it, it is still annoying to have the
wrong xterm entries in /etc/termcap (not to mention terminfo...). 'tset' seems
to take the 'rows' value from termcap, and 66 is certainly not what xterm
*normally* has. Dear 'snapshooters', why not using the X11R6 termcap
definitions, as they are (finally!) fixed and use 24 rows.

So far,    Michael

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Michael Joosten   |       Tel.  : (+49) (+) 5251-60-6127                 |
| CADLAB            |       Fax   : (+49) (+) 5251-60-6065                 |
| Fuerstenalle 7    |       E-Mail: joost@cadlab.de                        |
| 33102 Paderborn   |Huge Mail to : joost@uni-paderborn.de                 |
| FRG               |                                                      |
|--------------------------------------------------------------------------|
| CADLAB is a cooperation between Uni-GH Paderborn & SNI AG                |
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~