> 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:

  Comments to clarify, also align skipOverFieldSignature

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/21830/files
  - new: https://git.openjdk.org/jdk/pull/21830/files/79d4dd18..4325e94d

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=21830&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21830&range=00-01

  Stats: 52 lines in 2 files changed: 18 ins; 11 del; 23 mod
  Patch: https://git.openjdk.org/jdk/pull/21830.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21830/head:pull/21830

PR: https://git.openjdk.org/jdk/pull/21830

Reply via email to