On Fri, 19 Jul 2024 08:26:46 GMT, Adam Sotona <asot...@openjdk.org> wrote:

>> `ClassFile.verify()` should always return list of verification errors and 
>> never throw an exception, even for corrupted classes.
>> `BoundAttribute` initializations of `LocalVariableTable` and 
>> `LocalVariableTypeTable` attributes do not expect invalid possible locations 
>> and cause `ClassCastException`.
>> 
>> This patch fixes `BoundAttribute` to throw `IllegalArgumentException` for 
>> invalid `LocalVariableTable` and `LocalVariableTypeTable` attributes 
>> locations. And makes `VerifierImpl` a bit more resilient to exceptions 
>> thrown from the verifier initialization.
>> 
>> Relevant test is added.
>> 
>> Please review.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   nit change

src/java.base/share/classes/jdk/internal/classfile/impl/ClassFileImpl.java line 
138:

> 136:             return VerifierImpl.verify(model, 
> classHierarchyResolverOption().classHierarchyResolver(), null);
> 137:         } catch (IllegalArgumentException verifierInitializationError) {
> 138:             return List.of(new 
> VerifyError(verifierInitializationError.getMessage()));

Note that the list returned by `VerifierImpl.verify(…)` is mutable, whereas 
`List.of(…)` is unmodifiable.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20241#discussion_r1685063956

Reply via email to