diff options
-rw-r--r-- | etc/gettytab | 2 | ||||
-rw-r--r-- | sys/kern/tty.c | 15 |
2 files changed, 14 insertions, 3 deletions
diff --git a/etc/gettytab b/etc/gettytab index b75da3d..2d3a80a 100644 --- a/etc/gettytab +++ b/etc/gettytab @@ -162,7 +162,7 @@ X|Xwindow|X window system:\ :fd@:nd@:cd@:rw:sp#9600: P|Pc|Pc console:\ - :ht:np:sp#115200: + :ht:np: # # Wierdo special case for fast crt's with hardcopy devices diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 25908df..a3db944 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -870,8 +870,19 @@ static int ttydevsw_defparam(struct tty *tp, struct termios *t) { - /* Use a fake baud rate, we're not a real device. */ - t->c_ispeed = t->c_ospeed = TTYDEF_SPEED; + /* + * Allow the baud rate to be adjusted for pseudo-devices, but at + * least restrict it to 115200 to prevent excessive buffer + * usage. Also disallow 0, to prevent foot shooting. + */ + if (t->c_ispeed < B50) + t->c_ispeed = B50; + else if (t->c_ispeed > B115200) + t->c_ispeed = B115200; + if (t->c_ospeed < B50) + t->c_ospeed = B50; + else if (t->c_ospeed > B115200) + t->c_ospeed = B115200; return (0); } |