langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Wed Jul 05 20:24:25 2017 +0200
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Mar 13 13:15:24 2015 +0530
@@ -56,6 +56,7 @@
import static com.sun.tools.javac.code.Flags.*;
import static com.sun.tools.javac.code.Kinds.Kind.*;
+import static com.sun.tools.javac.code.TypeTag.ARRAY;
import static com.sun.tools.javac.code.TypeTag.CLASS;
import static com.sun.tools.javac.code.TypeTag.TYPEVAR;
import static com.sun.tools.javac.jvm.ClassFile.*;
@@ -2006,6 +2007,15 @@
}
if (saveParameterNames)
setParameterNames(m, type);
+
+ if ((flags & VARARGS) != 0) {
+ final Type last = type.getParameterTypes().last();
+ if (last == null || !last.hasTag(ARRAY)) {
+ m.flags_field &= ~VARARGS;
+ throw badClassFile("malformed.vararg.method", m);
+ }
+ }
+
return m;
}