[ 
https://issues.apache.org/jira/browse/COLLECTIONS-901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18128370#comment-18128370
 ] 

Aryan Ganjoo commented on COLLECTIONS-901:
------------------------------------------

The proposed fix and regression test are in 
https://github.com/apache/commons-collections/pull/751. The default Maven build 
passed locally on the final three-file commit; hosted CI and maintainer review 
are pending.

> ListUtils.partition last partition overflows when a list is near 
> Integer.MAX_VALUE
> ----------------------------------------------------------------------------------
>
>                 Key: COLLECTIONS-901
>                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-901
>             Project: Commons Collections
>          Issue Type: Bug
>            Reporter: Aryan Ganjoo
>            Priority: Major
>
> On current Commons Collections master 
> (2d985c27e07bdcbb9516aea44b0dda3f3e487ced), ListUtils.partition() can compute 
> a negative end index for the final partition of a very large virtual List. 
> Partition.get() evaluates start + size in int arithmetic before Math.min, so 
> the addition overflows even though both start and the underlying list size 
> are valid.
> Reproduction without allocating a large list:
> - Use an AbstractList<Integer> whose size() returns Integer.MAX_VALUE and 
> whose get(index) returns index.
> - Call ListUtils.partition(list, (1 << 30) + 1).get(1).
> - The old code computes start = 1073741825 and end = -2147483646, then 
> subList throws IllegalArgumentException: fromIndex(1073741825) > 
> toIndex(-2147483646).
> Expected: the second partition spans indices 1073741825 through 2147483646 
> and has size 1073741822. A local one-line arithmetic correction and 
> regression test reproduce the old failure and pass after the fix. Independent 
> exact-patch review approved it; the default Maven build is being checked 
> separately. No PR or hosted CI result exists yet.
> This differs from COLLECTIONS-673, which fixed overflow in Partition.size(); 
> this failure is in Partition.get().
> Prepared with AI assistance.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to