[ 
https://issues.apache.org/jira/browse/DERBY-4088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680461#action_12680461
 ] 

Knut Anders Hatlen commented on DERBY-4088:
-------------------------------------------

Thanks for the bug report. If possible, could you also provide step-by-step 
description of how to reproduce the bug? The stack trace of the 
ArrayIndexOutOfBoundsException would also be helpful.

I haven't been able to reproduce the bug myself, so I can't say if the patch is 
correct. My understanding of that code is that the check against MAX_DSS_LENGTH 
is used to determine the format of the byte string, which should not be 
affected by the current position in the read buffer. It is the call to 
ensureBLayerDataInBuffer() that is supposed to ensure that the read buffer is 
large enough and prevent that the AIOOBE is thrown. So my initial reaction is 
that the bug is probably somewhere else.

> DDMReader readBytes ArrayIndexOutOfBoundsException
> --------------------------------------------------
>
>                 Key: DERBY-4088
>                 URL: https://issues.apache.org/jira/browse/DERBY-4088
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Server
>    Affects Versions: 10.4.2.0
>         Environment: CentOS 5, java 1.6.0_11
>            Reporter: Urban Widmark
>         Attachments: derby-ddm.patch
>
>
> DDMReader.readBytes(int length) checks the length vs 
> DssConstants.MAX_DSS_LENGTH, but ignores the fact that the buffer position 
> "pos" might not be 0. If pos is non-zero then the pos + length can be larger 
> than the size of "buffer" causing an ArrayIndexOutOfBoundsException.
> For me this happened when sending a BLOB that was 32766 bytes long. The value 
> of pos was 2 in that method.

-- 
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