You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2008/07/03 10:14:45 UTC
[jira] Closed: (DERBY-3739) Skip and read methods in
ArrayInputStream may overflow
[ https://issues.apache.org/jira/browse/DERBY-3739?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Knut Anders Hatlen closed DERBY-3739.
-------------------------------------
Resolution: Fixed
Fix Version/s: 10.5.0.0
Committed revision 673610.
> Skip and read methods in ArrayInputStream may overflow
> ------------------------------------------------------
>
> Key: DERBY-3739
> URL: https://issues.apache.org/jira/browse/DERBY-3739
> Project: Derby
> Issue Type: Bug
> Components: Store
> Affects Versions: 10.5.0.0
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Priority: Minor
> Fix For: 10.5.0.0
>
> Attachments: d3739-read.diff, d3739-skip.diff, d3739-skip.stat, ReadOverflow.java
>
>
> If ArrayInputStream.skip() is called with a large value (like Long.MAX_VALUE) an internal calculation may overflow and cause unexpected results.
> It's the line which says
> if ((position + count) > end) {
> that can overflow. If count (a long) is so big that position + count doesn't fit in a long, the condition will evaluate to false although it should have evaluated to true. Changing the condition to (count > end - position) will fix the problem. Alternatively, we could simplify the entire method body to:
> count = Math.min(count, end - position);
> position += count;
> return count;
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.