RFR: 8346785: Potential infinite loop in JavadocTokenizer.ensures [v2]

Hannes Wallnöfer hannesw at openjdk.org
Thu Apr 24 15:08:48 UTC 2025


On Thu, 24 Apr 2025 14:28:21 GMT, Nizar Benalla <nbenalla at openjdk.org> wrote:

>> Please review this patch to fix a potential infinite loop in `JavadocTokenizer.ensure` when `map.length` and `size + need` approach Interger.MAX_VALUE.
>> 
>> While I couldn't reproduce the issue even with large inputs (~1.9GB java file where almost the entire file is one javadoc comment), the fix is about correctness and prevention of UB in extreme cases.
>> 
>> TIA
>
> Nizar Benalla has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
> 
>  - respond to feedback -- keep int[] instead of Arraylist and add check for grow <= 0
>  - Merge branch 'master' into jd-ensure
>  - fix JdT.ensure

src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavadocTokenizer.java line 313:

> 311: 
> 312:             if (grow <= 0) {
> 313:                 throw new IndexOutOfBoundsException();

This check needs to be inside the `while` loop (see bug description).

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/24620#discussion_r2058668490


More information about the compiler-dev mailing list