RFR (M): 8161224: CONSTANT_NameAndType_info permits references to illegal names and descriptors

Rachel Protacio rachel.protacio at oracle.com
Thu Sep 1 21:30:58 UTC 2016


Please review this fix, which addresses a few issues related to 
incomplete format checking with NameAndType names and signatures.

First, the code that should have been format checking the strings in 
later classfile versions was in fact just checking for periods, so I've 
rewritten it to call verify_unqualified_name(). Second, the checks were 
(depending on the version) only performed when referenced through 
Methodref/Fieldref/InterfaceMethodref/InvokeDynamic, meaning that 
non-referenced NameAndType bytecodes did not get checked like they were 
supposed to. My change enforces the spec in both aspects. To summarize:

The existing code had:
- strict checks for pre-5.0
- incomplete/non-spec-compliant checks for 5.0-and-later
- no checks for un-referenced NameAndType (A) names and (B) 
6.0-and-earlier signatures.

My change has:
- the same strict checks for pre-5.0
- complete/spec-compliant checks for 5.0-and-later
- all checks moved to the NameAndType section so all names and 
signatures will be checked regardless of whether NameAndType is referenced.

Bug: https://bugs.openjdk.java.net/browse/JDK-8161224
Open webrev: http://cr.openjdk.java.net/~rprotacio/8161224.00/

Testing: The jck tests which had been failing for this bug now pass, 
along with all other jck vm tests. Also tested with JPRT and RBT 
hotspot_all and noncolo tests.

A compatibility request has been approved for this change.

Thank you,

More information about the hotspot-runtime-dev mailing list