You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/11/22 12:52:35 UTC
[commons-bcel] 01/11: org.apache.bcel.classfile.LocalVariableTable constructors now throw ClassFormatException on invalid input
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
commit 24547cf7ec772185ad04e5dd9aa63bbf9ce2aea5
Author: Gary David Gregory (Code signing key) <gg...@apache.org>
AuthorDate: Mon Nov 21 16:13:04 2022 -0500
org.apache.bcel.classfile.LocalVariableTable constructors now throw
ClassFormatException on invalid input
---
src/changes/changes.xml | 1 +
src/main/java/org/apache/bcel/classfile/LocalVariable.java | 2 ++
src/main/java/org/apache/bcel/classfile/LocalVariableTable.java | 4 +++-
3 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 25c0b667..238f3320 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -104,6 +104,7 @@ The <action> type attribute can be add,update,fix,remove.
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.InnerClasses constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.LineNumber constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.LocalVariable constructors now throw ClassFormatException on invalid input.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.LocalVariableTable constructors now throw ClassFormatException on invalid input.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump spotbugs-maven-plugin from 4.7.2.2 to 4.7.3.0 #167.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump jmh.version from 1.35 to 1.36 #170.</action>
diff --git a/src/main/java/org/apache/bcel/classfile/LocalVariable.java b/src/main/java/org/apache/bcel/classfile/LocalVariable.java
index a67daf51..0b27b693 100644
--- a/src/main/java/org/apache/bcel/classfile/LocalVariable.java
+++ b/src/main/java/org/apache/bcel/classfile/LocalVariable.java
@@ -37,6 +37,8 @@ import org.apache.bcel.util.Args;
*/
public final class LocalVariable implements Cloneable, Node, Constants {
+ static final LocalVariable[] EMPTY_ARRAY = {};
+
/** Range in which the variable is valid. */
private int startPc;
diff --git a/src/main/java/org/apache/bcel/classfile/LocalVariableTable.java b/src/main/java/org/apache/bcel/classfile/LocalVariableTable.java
index da1c1796..d1125708 100644
--- a/src/main/java/org/apache/bcel/classfile/LocalVariableTable.java
+++ b/src/main/java/org/apache/bcel/classfile/LocalVariableTable.java
@@ -24,6 +24,7 @@ import java.util.Iterator;
import java.util.stream.Stream;
import org.apache.bcel.Const;
+import org.apache.bcel.util.Args;
/**
* This class represents colection of local variables in a method. This attribute is contained in the <em>Code</em>
@@ -62,7 +63,8 @@ public class LocalVariableTable extends Attribute implements Iterable<LocalVaria
*/
public LocalVariableTable(final int nameIndex, final int length, final LocalVariable[] localVariableTable, final ConstantPool constantPool) {
super(Const.ATTR_LOCAL_VARIABLE_TABLE, nameIndex, length, constantPool);
- this.localVariableTable = localVariableTable;
+ this.localVariableTable = localVariableTable != null ? localVariableTable : LocalVariable.EMPTY_ARRAY;
+ Args.requireU2(this.localVariableTable.length, "localVariableTable.length");
}
/**