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(in.position()-matchCount);

by

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.

Reply via email to