diff options
author | bde <bde@FreeBSD.org> | 1998-12-17 18:43:08 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1998-12-17 18:43:08 +0000 |
commit | 9cbd1c4cd26c034d97bc07276e35d8f165935980 (patch) | |
tree | 845c34da6ffe17a30e734b0eea14bd152e12f61c | |
parent | 4d682cb5b40c5c61249e4a7e55fc11ff4349e088 (diff) | |
download | FreeBSD-src-9cbd1c4cd26c034d97bc07276e35d8f165935980.zip FreeBSD-src-9cbd1c4cd26c034d97bc07276e35d8f165935980.tar.gz |
Fixed handling of BREAK in input. BREAK was not being converted into an
escape sequence in the `-ignbrk -brkint parmrk' case.
Found by: NIST-PCTS
-rw-r--r-- | sys/dev/cy/cy.c | 10 | ||||
-rw-r--r-- | sys/dev/cy/cy_isa.c | 10 | ||||
-rw-r--r-- | sys/i386/isa/cy.c | 10 |
3 files changed, 21 insertions, 9 deletions
diff --git a/sys/dev/cy/cy.c b/sys/dev/cy/cy.c index ccec809..df09722 100644 --- a/sys/dev/cy/cy.c +++ b/sys/dev/cy/cy.c @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: cy.c,v 1.77 1998/12/17 17:40:13 bde Exp $ + * $Id: cy.c,v 1.78 1998/12/17 18:18:06 bde Exp $ */ #include "opt_compat.h" @@ -2068,8 +2068,12 @@ comparam(tp, t) opt |= CD1400_COR4_INLCR; #endif if (iflag & IGNBRK) - opt |= CD1400_COR4_IGNBRK; - if (!(iflag & BRKINT)) + opt |= CD1400_COR4_IGNBRK | CD1400_COR4_NOBRKINT; + /* + * The `-ignbrk -brkint parmrk' case is not handled by the hardware, + * so only tell the hardware about -brkint if -parmrk. + */ + if (!(iflag & (BRKINT | PARMRK))) opt |= CD1400_COR4_NOBRKINT; #if 0 /* XXX using this "intelligence" breaks reporting of overruns. */ diff --git a/sys/dev/cy/cy_isa.c b/sys/dev/cy/cy_isa.c index ccec809..df09722 100644 --- a/sys/dev/cy/cy_isa.c +++ b/sys/dev/cy/cy_isa.c @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: cy.c,v 1.77 1998/12/17 17:40:13 bde Exp $ + * $Id: cy.c,v 1.78 1998/12/17 18:18:06 bde Exp $ */ #include "opt_compat.h" @@ -2068,8 +2068,12 @@ comparam(tp, t) opt |= CD1400_COR4_INLCR; #endif if (iflag & IGNBRK) - opt |= CD1400_COR4_IGNBRK; - if (!(iflag & BRKINT)) + opt |= CD1400_COR4_IGNBRK | CD1400_COR4_NOBRKINT; + /* + * The `-ignbrk -brkint parmrk' case is not handled by the hardware, + * so only tell the hardware about -brkint if -parmrk. + */ + if (!(iflag & (BRKINT | PARMRK))) opt |= CD1400_COR4_NOBRKINT; #if 0 /* XXX using this "intelligence" breaks reporting of overruns. */ diff --git a/sys/i386/isa/cy.c b/sys/i386/isa/cy.c index ccec809..df09722 100644 --- a/sys/i386/isa/cy.c +++ b/sys/i386/isa/cy.c @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: cy.c,v 1.77 1998/12/17 17:40:13 bde Exp $ + * $Id: cy.c,v 1.78 1998/12/17 18:18:06 bde Exp $ */ #include "opt_compat.h" @@ -2068,8 +2068,12 @@ comparam(tp, t) opt |= CD1400_COR4_INLCR; #endif if (iflag & IGNBRK) - opt |= CD1400_COR4_IGNBRK; - if (!(iflag & BRKINT)) + opt |= CD1400_COR4_IGNBRK | CD1400_COR4_NOBRKINT; + /* + * The `-ignbrk -brkint parmrk' case is not handled by the hardware, + * so only tell the hardware about -brkint if -parmrk. + */ + if (!(iflag & (BRKINT | PARMRK))) opt |= CD1400_COR4_NOBRKINT; #if 0 /* XXX using this "intelligence" breaks reporting of overruns. */ |