On Tue, 29 Aug 2023 20:00:49 GMT, Nikita Sakharin <d...@openjdk.org> wrote:
>> `Collections.rotate` method contains a bug. This method throws >> IndexOutOfBoundsException on arrays larger than $2^{30}$ elements. The way >> to reproduce: >> >> final int size = (1 << 30) + 1; >> final List<Byte> list = new ArrayList<>(size); >> for (int i = 0; i < size; ++i) >> list.add((byte) 0); >> Collections.rotate(list, size - 1); >> >> Output: >> ```Exception in thread "main" java.lang.IndexOutOfBoundsException: Index >> -2147483648 out of bounds for length 1073741825``` >> >> In that case private method `Collections.rotate1` will be called. And the >> line: >> `i += distance;` >> will cause overflow. I fixed this method and wrote a test for it. >> >> I've signed the Oracle Contributor Agreement, but I don't have permission to >> raise a bug in the JDK Bug System. >> >> Kindly ask you to raise a bug. > > Nikita Sakharin has updated the pull request incrementally with one > additional commit since the last revision: > > 8314236: add comment for test OK, looks reasonable. ------------- Marked as reviewed by shade (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/15270#pullrequestreview-1627275045