On Sun, 7 Sep 2025 09:03:56 GMT, Guanqiang Han <g...@openjdk.org> wrote:

>> Validate class name length immediately after GetStringUTFLength() in 
>> Class.forName0. This prevents potential issues caused by overly long class 
>> names before they reach later code that would reject them, throwing 
>> ClassNotFoundException early.
>
> Guanqiang Han 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 18 additional 
> commits since the last revision:
> 
>  - Optimize implementation
>  - Merge remote-tracking branch 'upstream/master' into 8328874
>  - move common method into a common file.
>  - Merge remote-tracking branch 'upstream/master' into 8328874
>  - Update Class.java
>    
>    change overflow check
>  - Update Class.java
>    
>    Simplify length check
>  - Update Class.java
>    
>    avoid the case of int overflow
>  - Update Class.java
>    
>    Use ModifiedUtf.utfLen instead of static import for readability
>  - change copyright year
>  - a small fix
>  - ... and 8 more: https://git.openjdk.org/jdk/compare/57721ee7...c01a6d58

src/java.base/share/classes/jdk/internal/util/ModifiedUtf.java line 95:

> 93:         // The check utfLen >= strLen ensures we don't incorrectly return 
> true in case of int overflow.
> 94:         int utfLen = utfLen(str, 0);
> 95:         return utfLen >= strLen && utfLen <= CONSTANT_POOL_UTF8_MAX_BYTES;

Now that the `strLen > CONSTANT_POOL_UTF8_MAX_BYTES` check is performed above, 
`utfLen` can be at most `CONSTANT_POOL_UTF8_MAX_BYTES * 3` here (`196_605`), 
which can’t overflow an `int`, so this check can be simplified:
Suggestion:

        // The check strLen > CONSTANT_POOL_UTF8_MAX_BYTES above ensures that 
utfLen can't overflow here.
        int utfLen = utfLen(str, 0);
        return utfLen <= CONSTANT_POOL_UTF8_MAX_BYTES;

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26802#discussion_r2328596638

Reply via email to