[
https://issues.apache.org/jira/browse/DERBY-4060?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12678719#action_12678719
]
Knut Anders Hatlen commented on DERBY-4060:
-------------------------------------------
The patch looks good to me. (I was wondering what we should do with the
translations, but it appears that we are only required to do something if the
message parameters are changed, see comment near the top of messages.xml. For
now it's probably better to leave the (possibly inaccurate) translated messages
than to remove them.)
> Blob.getBinaryStream(long,long) is off by one for the pos+len check
> -------------------------------------------------------------------
>
> Key: DERBY-4060
> URL: https://issues.apache.org/jira/browse/DERBY-4060
> Project: Derby
> Issue Type: Bug
> Components: JDBC, Network Client
> Affects Versions: 10.3.3.1, 10.4.2.0, 10.5.0.0
> Reporter: Trejkaz
> Assignee: Kristian Waagan
> Fix For: 10.5.0.0
>
> Attachments: derby-4060-1a-sub_stream_fix.diff,
> derby-4060-1a-sub_stream_fix.stat, derby-4060-1b-sub_stream_fix.diff,
> derby-4060-2a-doc_changes.diff
>
>
> If you have a BLOB of length 20, and call blob.getBinaryStream(11,10), it
> will give you an error:
> java.sql.SQLException: Sum of position('11') and length('10') is greater
> than the size of the LOB.
> This is following word for word an error in the JDBC Javadoc:
> SQLException - if pos is less than 1 or if pos is greater than the
> number of bytes in the Blob or if pos + length is greater than the number of
> bytes in the Blob
> So it's checking 11 + 10 > 20, but it should check 11 + 10 > 21 (pos + len
> > blob.length() + 1) to allow reading the last byte.
> The Javadoc for Clob.getCharacterStream(long,long) has similar wording so it
> may have the same issue.
> Likewise, the client driver may have the same issue -- I haven't yet checked.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.