You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2015/08/21 13:32:36 UTC
svn commit: r1696944 - in /commons/proper/bcel/trunk/src:
changes/changes.xml main/java/org/apache/commons/bcel6/Constants.java
main/java/org/apache/commons/bcel6/verifier/statics/Pass3aVerifier.java
Author: sebb
Date: Fri Aug 21 11:32:35 2015
New Revision: 1696944
URL: http://svn.apache.org/r1696944
Log:
BCEL-251 Pass3aVerifier visitANEWARRAY() does not allow 255 array dimensions
Modified:
commons/proper/bcel/trunk/src/changes/changes.xml
commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java
commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/verifier/statics/Pass3aVerifier.java
Modified: commons/proper/bcel/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/changes/changes.xml?rev=1696944&r1=1696943&r2=1696944&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/changes/changes.xml (original)
+++ commons/proper/bcel/trunk/src/changes/changes.xml Fri Aug 21 11:32:35 2015
@@ -63,6 +63,7 @@ The <action> type attribute can be add,u
<body>
<release version="6.0" date="TBA" description="Major release with Java 7 and 8 support">
+ <action issue="BCEL-251" type="fix">Pass3aVerifier visitANEWARRAY() does not allow 255 array dimensions</action>
<action issue="BCEL-211" type="update">Some additional clone methods should be public.</action>
<action issue="BCEL-249" type="fix">Check for max Short seems wrong</action>
<action issue="BCEL-127" type="update">Document that Instruction Factory returns singleton instances</action>
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java?rev=1696944&r1=1696943&r2=1696944&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java Fri Aug 21 11:32:35 2015
@@ -362,6 +362,15 @@ public final class Constants {
*/
public static final int MAX_CODE_SIZE = 65536; //bytes
+ /**
+ * The maximum number of dimensions in an array ({@value}).
+ * One of the limitations of the Java Virtual Machine.
+ *
+ * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-150">
+ * Field Descriptors in The Java Virtual Machine Specification</a>
+ */
+ public static final int MAX_ARRAY_DIMENSIONS = 255;
+
/** Java VM opcode.
* @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.nop">
* Opcode definitions in The Java Virtual Machine Specification</a> */
Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/verifier/statics/Pass3aVerifier.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/verifier/statics/Pass3aVerifier.java?rev=1696944&r1=1696943&r2=1696944&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/verifier/statics/Pass3aVerifier.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/verifier/statics/Pass3aVerifier.java Fri Aug 21 11:32:35 2015
@@ -812,8 +812,10 @@ public final class Pass3aVerifier extend
Type t = o.getType(cpg);
if (t instanceof ArrayType){
int dimensions = ((ArrayType) t).getDimensions();
- if (dimensions >= 255){
- constraintViolated(o, "Not allowed to create an array with more than 255 dimensions.");
+ if (dimensions > Constants.MAX_ARRAY_DIMENSIONS){
+ constraintViolated(o,
+ "Not allowed to create an array with more than "+ Constants.MAX_ARRAY_DIMENSIONS + " dimensions;"+
+ " actual: " + dimensions);
}
}
}