RFR: 8343437: ClassDesc.of incorrectly permitting empty names [v4]

Mandy Chung mchung at openjdk.org
Sun Nov 3 00:13:27 UTC 2024


On Sat, 2 Nov 2024 00:32:49 GMT, Chen Liang <liach at openjdk.org> wrote:

>> In the patch for [JDK-8338544](https://bugs.openjdk.org/browse/JDK-8338544) #20665, the validation methods `validateBinaryClassName` and `validateInternalClassName` only checks if a separator char is the initial or final char, or if it immediately follows another chars.  This omitted the case of empty strings, and allowed creation of invalid ClassDesc with empty binary name, which is otherwise rejected by `ofDescriptor`.
>> 
>> To better check for the separator char, the tracking mechanism is updated to indicate a position where a separator char shouldn't appear, or where the name string should not terminate.  This is initially set to the initial position 0, and upon each time of encountering a separator, this is updated to the next char.
>> 
>> This logic is similar to the existing one in `skipOverFieldSignature`, which uses a boolean `legal` variable.  Both reject empty strings, leading and trailing separators, or consecutive separators.  The new logic, however, does not require repeated updates to the new `afterSeparator` variable upon scanning each character.
>> 
>> In addition, I noted the package name validation erroneously does not prohibit leading, trailing, or consecutive separator chars.  (Package names are derived from class or interface names, so the same restrictions shall apply)  This patch also makes package name validation reuse class or interface name validation in non-empty (unnamed package) cases, and added those cases to the test suite.
>
> Chen Liang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   More descriptive names

Marked as reviewed by mchung (Reviewer).

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

PR Review: https://git.openjdk.org/jdk/pull/21830#pullrequestreview-2411757994


More information about the core-libs-dev mailing list