[ 
https://issues.apache.org/jira/browse/DIRMINA-536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590737#action_12590737
 ] 

Trustin Lee commented on DIRMINA-536:
-------------------------------------

Yes, 1.x is purely under maintenance mode.  I was lazy to backport the test 
cases to both 1.0 and 1.1. :)

> TextLineDecoder throws an IndexOutOfBoundsException
> ---------------------------------------------------
>
>                 Key: DIRMINA-536
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-536
>             Project: MINA
>          Issue Type: Bug
>          Components: Filter
>    Affects Versions: 1.0.9, 1.1.6, 2.0.0-M1
>         Environment: All versions in any environnement
>            Reporter: Edouard De Oliveira
>            Assignee: Trustin Lee
>             Fix For: 1.0.10, 1.1.7, 2.0.0-M2
>
>   Original Estimate: 0.25h
>  Remaining Estimate: 0.25h
>
> 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