Hi,
I've been working on serial ports/consoles the last few days
and have run into what I consider a bug in getty (-current)..
When the following command is run as root:
/usr/obj/usr/src/libexec/getty/getty std.38400 ttyd1
the call to login_tty() fails in the opentty() function:
else {
login_tty(i);
return 1;
}
However, the return code is not checked. File descripters 0,
1, and 2 are not modified to point at ttyd1, and the getty then
proceeds to run on the current terminal session.
At a minimum, I'd like to commit the following patch. It would
have helped avoid some frustrating moments...
===================================================================
RCS file: /home/ncvs/src/libexec/getty/main.c,v
retrieving revision 1.31
diff -u -r1.31 main.c
--- main.c 2000/10/10 01:53:00 1.31
+++ main.c 2000/11/14 02:25:31
@@ -444,7 +444,10 @@
return 0;
}
else {
- login_tty(i);
+ if (login_tty(i) < 0) {
+ syslog(LOG_ERR, "login_tty %s: %m", ttyn);
+ return 0;
+ }
return 1;
}
}
This of course then leads to the question of why the
TIOCSCTTY ioctl call failes. From the above change:
Nov 13 17:25:47 mail getty[1236]: login_tty /dev/ttyd1: Operation not
permitted
It's worth noting that /dev/ttyd1 has been successfully openned
on fd 3 this point. The serial ports work fine with tip or kermit
and from dmesg are:
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
comments welcome.
-John
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message