summaryrefslogtreecommitdiff
path: root/sys/kern/tty.c
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>1995-07-21 14:41:43 +0000
committerBruce Evans <bde@FreeBSD.org>1995-07-21 14:41:43 +0000
commitd83f358fa30364beeb812b3e70a4cdd6f4da96d3 (patch)
treecd38477c497ef82280f73b4530ea6297489693ae /sys/kern/tty.c
parent2ef58019092555f1ac1c7b743ef12091867c0b55 (diff)
Notes
Diffstat (limited to 'sys/kern/tty.c')
-rw-r--r--sys/kern/tty.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c
index c58192d01648..5c14bc83f3b2 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)tty.c 8.8 (Berkeley) 1/21/94
- * $Id: tty.c,v 1.49 1995/07/21 13:56:29 bde Exp $
+ * $Id: tty.c,v 1.50 1995/07/21 14:15:09 bde Exp $
*/
/*-
@@ -185,6 +185,9 @@ char const char_type[] = {
#define CLR(t, f) (t) &= ~(f)
#define ISSET(t, f) ((t) & (f))
+#undef MAX_INPUT /* XXX wrong in <sys/syslimits.h> */
+#define MAX_INPUT TTYHOG
+
/*
* Initial open of tty, or (re)entry to standard tty line discipline.
*/
@@ -308,7 +311,11 @@ ttyinput(c, tp)
if (ISSET(iflag, IGNPAR))
return (0);
else if (ISSET(iflag, PARMRK)) {
-parmrk: (void)putc(0377 | TTY_QUOTE, &tp->t_rawq);
+parmrk:
+ if (tp->t_rawq.c_cc + tp->t_canq.c_cc >
+ MAX_INPUT - 3)
+ goto input_overflow;
+ (void)putc(0377 | TTY_QUOTE, &tp->t_rawq);
(void)putc(0 | TTY_QUOTE, &tp->t_rawq);
(void)putc(c | TTY_QUOTE, &tp->t_rawq);
goto endcase;
@@ -518,7 +525,8 @@ parmrk: (void)putc(0377 | TTY_QUOTE, &tp->t_rawq);
/*
* Check for input buffer overflow
*/
- if (tp->t_rawq.c_cc + tp->t_canq.c_cc >= TTYHOG) {
+ if (tp->t_rawq.c_cc + tp->t_canq.c_cc >= MAX_INPUT) {
+input_overflow:
if (ISSET(iflag, IMAXBEL)) {
if (tp->t_outq.c_cc < tp->t_hiwat)
(void)ttyoutput(CTRL('g'), tp);