RFR: 8320396: Class-File API ClassModel::verify should include checks from hotspot/share/classfile/classFileParser.cpp [v5]
Chen Liang
liach at openjdk.org
Mon May 13 17:38:08 UTC 2024
On Mon, 13 May 2024 17:24:39 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:
>> src/java.base/share/classes/jdk/internal/classfile/impl/verifier/ParserVerifier.java line 205:
>>
>>> 203: private void verifyAttribute(AttributedElement ae, Attribute<?> a, List<VerifyError> errors) {
>>> 204: int payLoad = ((BoundAttribute)a).payloadLen();
>>> 205: if (payLoad != switch (a) {
>>
>> Please break this up - e.g. with an intermediate `foundPayload` variable - having a multi-line switch nested as an if condition looks very jarring!
>
> Is this method only supposed to check the attribute size? It would be nice perhaps to enhance this to enforce more structural constraints - I added a couple of comments in that direction, but there's many more (e.g. for instance make sure that any entry that morally points to a class/method is of the right kind)
Some of the checks don't verify the attributes point to valid cp entries; since CF API is lazy, those entries much be expanded by calling the accessors on Bound attributes.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16809#discussion_r1598822622
More information about the compiler-dev
mailing list