Integrated: 8296010: AssertionError in annotationTargetType

Vicente Romero vromero at openjdk.org
Thu Feb 16 19:11:03 UTC 2023


On Fri, 27 Jan 2023 05:13:35 GMT, Vicente Romero <vromero at openjdk.org> wrote:

> javac is crashing if a class file is forged so that an annotation can be applicable to an unknown target. It would be equivalent to the following declaration:
> 
> 
> @Target({ElementType.FIELD, ElementType.NO_SUCH})
> @interface A {}
> 
> if the compiler process this source it would issue a compiler error, indicating that symbol `NO_SUCH` cant be found. Currently our class reader just issues a warning and move on. This is OK as it could be that the loaded class won't be used anyway but if this annotation is actually applied to symbol as in:
> 
> 
> class B {
>     @A Object o;
> }
> 
> then this to my understanding should be a compilation error. Currently javac is crashing and this is not acceptable, so this PR is fixing this issue so that a compilation error is issued instead.

This pull request has now been integrated.

Changeset: de80dd9c
Author:    Vicente Romero <vromero at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/de80dd9c15cd3194ba8c512498d37a76c747e5fc
Stats:     230 lines in 8 files changed: 199 ins; 1 del; 30 mod

8296010: AssertionError in annotationTargetType

Reviewed-by: jjg

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

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


More information about the compiler-dev mailing list