< prev index next >

src/java.base/share/classes/jdk/internal/classfile/impl/verifier/ParserVerifier.java

Print this page
@@ -39,12 +39,11 @@
  import java.util.function.ToIntFunction;
  
  import jdk.internal.classfile.impl.BoundAttribute;
  import jdk.internal.classfile.impl.Util;
  
- import static java.lang.constant.ConstantDescs.CLASS_INIT_NAME;
- import static java.lang.constant.ConstantDescs.INIT_NAME;
+ import static java.lang.constant.ConstantDescs.*;
  
  /// ParserVerifier performs selected checks of the class file format according to
  /// {@jvms 4.8 Format Checking}.
  ///
  /// From `classFileParser.cpp`.

@@ -274,10 +273,18 @@
                  }
                  yield 2 + 8 * ica.classes().size();
              }
              case LineNumberTableAttribute lta ->
                  2 + 4 * lta.lineNumbers().size();
+             case LoadableDescriptorsAttribute lda -> {
+                 for (var desc : lda.loadableDescriptorSymbols()) {
+                     if (desc.equals(CD_void)) {
+                         errors.add(new VerifyError("illegal signature %s".formatted(desc)));
+                     }
+                 }
+                 yield 2 + 2 * lda.loadableDescriptors().size();
+             }
              case LocalVariableTableAttribute lvta ->
                  2 + 10 * lvta.localVariables().size();
              case LocalVariableTypeTableAttribute lvta ->
                  2 + 10 * lvta.localVariableTypes().size();
              case MethodParametersAttribute mpa ->

@@ -344,12 +351,12 @@
              }
              case SourceIDAttribute sida -> {
                  sida.sourceId();
                  yield 2;
              }
-             case StackMapTableAttribute smta ->
-                 2 + subSize(smta.entries(), frame -> stackMapFrameSize(frame));
+             case StackMapTableAttribute _ ->
+                 -1; // Not sufficient info for assert unset size
              case SyntheticAttribute _ ->
                  0;
              case UnknownAttribute _ ->
                  -1;
              case CustomAttribute<?> _ ->
< prev index next >