svn commit: r191893 - head/sys/kern
Ed Schouten
ed at FreeBSD.org
Thu May 7 17:39:24 UTC 2009
Author: ed
Date: Thu May 7 17:39:23 2009
New Revision: 191893
URL: http://svn.freebsd.org/changeset/base/191893
Log:
If we have a regular rint handler, never go into rint_bypass mode.
It turns out if we called cfmakeraw() on a TTY with only a rint handler
in place, it could inject data into the TTY, even though it should be
redirected. Always take a look at the hooks before looking at the
termios flags.
Modified:
head/sys/kern/tty_ttydisc.c
Modified: head/sys/kern/tty_ttydisc.c
==============================================================================
--- head/sys/kern/tty_ttydisc.c Thu May 7 17:05:03 2009 (r191892)
+++ head/sys/kern/tty_ttydisc.c Thu May 7 17:39:23 2009 (r191893)
@@ -560,12 +560,15 @@ ttydisc_optimize(struct tty *tp)
{
tty_lock_assert(tp, MA_OWNED);
- if ((!CMP_FLAG(i, ICRNL|IGNCR|IMAXBEL|INLCR|ISTRIP|IXON) &&
+ if (ttyhook_hashook(tp, rint_bypass)) {
+ tp->t_flags |= TF_BYPASS;
+ } else if (ttyhook_hashook(tp, rint)) {
+ tp->t_flags &= ~TF_BYPASS;
+ } else if (!CMP_FLAG(i, ICRNL|IGNCR|IMAXBEL|INLCR|ISTRIP|IXON) &&
(!CMP_FLAG(i, BRKINT) || CMP_FLAG(i, IGNBRK)) &&
(!CMP_FLAG(i, PARMRK) ||
CMP_FLAG(i, IGNPAR|IGNBRK) == (IGNPAR|IGNBRK)) &&
- !CMP_FLAG(l, ECHO|ICANON|IEXTEN|ISIG|PENDIN)) ||
- ttyhook_hashook(tp, rint_bypass)) {
+ !CMP_FLAG(l, ECHO|ICANON|IEXTEN|ISIG|PENDIN)) {
tp->t_flags |= TF_BYPASS;
} else {
tp->t_flags &= ~TF_BYPASS;
More information about the svn-src-all
mailing list