mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Edouard De Oliveira (JIRA)" <j...@apache.org>
Subject [jira] Created: (DIRMINA-536) TextLineDecoder throws an IndexOutOfBoundsException
Date Mon, 25 Feb 2008 14:50:51 GMT
TextLineDecoder throws an IndexOutOfBoundsException

                 Key: DIRMINA-536
                 URL: https://issues.apache.org/jira/browse/DIRMINA-536
             Project: MINA
          Issue Type: Bug
    Affects Versions: 1.1.6, 1.0.9, 2.0.0-M1
         Environment: All versions in any environnement
            Reporter: Edouard De Oliveira

Adding the following test to the TextLineDecoderTest JUNIT test class will raise the bug.

It's due to an incomplete match being incorrectly rewinded that causes the IndexOutOfBoundsException

    public void testSMTPDataBounds() throws Exception {
        TextLineDecoder decoder = new TextLineDecoder(Charset.forName("ISO-8859-1"),
                new LineDelimiter("\r\n.\r\n"));

        CharsetEncoder encoder = Charset.forName("ISO-8859-1").newEncoder();
        IoSession session = new DummySession();
        TestDecoderOutput out = new TestDecoderOutput();
        ByteBuffer in = ByteBuffer.allocate(16).setAutoExpand(true);

        in.putString("\r\n", encoder).flip().mark();
        decoder.decode(session, in.reset().mark(), out);
        Assert.assertEquals(0, out.getMessageQueue().size());
        in.putString("Body\r\n.\r\n", encoder).flip().mark();
        decoder.decode(session, in.reset().mark(), out);
        Assert.assertEquals(1, out.getMessageQueue().size());


To solve the issue, a simple patch is to replace the following line in org.apache.mina.filter.codec.textline.TextLineDecoder.java



in.position(Math.max(0, in.position()-matchCount));

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message