RFR: 8219810: javac throws NullPointerException

Archie L. Cobbs duke at openjdk.org
Fri Oct 21 22:37:10 UTC 2022


JVMS 4.5 states:

> Each field of a class may have at most one of its ACC_PUBLIC, ACC_PRIVATE, and ACC_PROTECTED flags set (JLS §8.3.1), and must not have both its ACC_FINAL and ACC_VOLATILE flags set (JLS §8.3.1.4).

and JVMS 4.6 states:

> Each method of a class may have at most one of its ACC_PUBLIC, ACC_PRIVATE, and ACC_PROTECTED flags set (JLS §8.4.3). 

However, when reading class files these illegal combinations are not actually checked, and this can lead to compiler crashes as in the bug example.

This patch adds checks for these illegal combinations.

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

Commit messages:
 - Also disallow field access flags from having both FINAL and VOLATILE.
 - Detect invalid access flag combinations for fields and methods in classfiles.

Changes: https://git.openjdk.org/jdk/pull/10826/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10826&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8219810
  Stats: 194 lines in 9 files changed: 192 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/10826.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10826/head:pull/10826

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


More information about the compiler-dev mailing list