RFR: 8367585: Move Utf8Entry length validation earlier [v2]
Chen Liang
liach at openjdk.org
Fri Nov 14 21:20:43 UTC 2025
On Wed, 1 Oct 2025 14:57:30 GMT, Adam Sotona <asotona at openjdk.org> wrote:
>> Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 13 commits:
>>
>> - Redundant changes, improve stuff
>> - Stage
>> - Merge branch 'master' of https://github.com/openjdk/jdk into feature/cf-utf8-length-early
>> - Merge branch 'master' of https://github.com/openjdk/jdk into feature/cf-utf8-length-early
>> - Merge branch 'master' of https://github.com/openjdk/jdk into feature/cf-utf8-length-early
>> - Stage
>> - Merge branch 'master' of https://github.com/openjdk/jdk into feature/cf-utf8-length-early
>> - Merge branch 'master' of https://github.com/openjdk/jdk into feature/cf-utf8-length-early
>> - Merge branch 'master' of https://github.com/openjdk/jdk into feature/cf-utf8-length-early
>> - Avoid being too specific
>> - ... and 3 more: https://git.openjdk.org/jdk/compare/58b601ac...8973a15d
>
> src/java.base/share/classes/jdk/internal/classfile/impl/AbstractPoolEntry.java line 160:
>
>> 158: if (!ModifiedUtf.isValidLengthInConstantPool(s)) {
>> 159: throw new IllegalArgumentException("utf8 length out of range of u2: " + ModifiedUtf.utfLen(s));
>> 160: }
>
> There might be multiple Utf8EntryImpl instances created and later reduced into a single entry to write, so the check performed here might be redundant.
I still think this is necessary. Most of the time, for strings with length < 20000, the check is almost trivial. Throwing an exception here provides a more useful stack trace about where the long string is first created, compared to a later exception which is harder to trace.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27281#discussion_r2528957813
More information about the core-libs-dev
mailing list