Description
A java.lang.IndexOutOfBoundsException is thrown when performing verification pass 3B if the stack is empty before the ATHROW instruction. Expected outcome is for a verification failure to be reported.
Output:
Apache Commons BCEL https://commons.apache.org/bcel Now verifying: Test Pass 1: VERIFIED_OK Passed verification. Pass 2: VERIFIED_OK Passed verification. Pass 3a, method number 0 ['static void x()']: VERIFIED_OK Passed verification. Exception in thread "main" org.apache.bcel.verifier.exc.AssertionViolatedException: INTERNAL ERROR: Some RuntimeException occurred while verify()ing class 'Test', method 'static void x()'. Original RuntimeException's stack trace: --- java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) at java.base/java.util.Objects.checkIndex(Objects.java:361) at java.base/java.util.ArrayList.get(ArrayList.java:427) at org.apache.bcel.verifier.structurals.OperandStack.peek(OperandStack.java:180) at org.apache.bcel.verifier.structurals.OperandStack.peek(OperandStack.java:172) at org.apache.bcel.verifier.structurals.InstConstraintVisitor.visitATHROW(InstConstraintVisitor.java:317) at org.apache.bcel.generic.ATHROW.accept(ATHROW.java:47) at org.apache.bcel.generic.InstructionHandle.accept(InstructionHandle.java:84) at org.apache.bcel.verifier.structurals.ControlFlowGraph$InstructionContextImpl.execute(ControlFlowGraph.java:198) at org.apache.bcel.verifier.structurals.Pass3bVerifier.circulationPump(Pass3bVerifier.java:164) at org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVerifier.java:386) at org.apache.bcel.verifier.PassVerifier.verify(PassVerifier.java:98) at org.apache.bcel.verifier.Verifier.doPass3b(Verifier.java:166) at org.apache.bcel.verifier.Verifier.verifyType(Verifier.java:90) at org.apache.bcel.verifier.Verifier.main(Verifier.java:69) --- at org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVerifier.java:398) at org.apache.bcel.verifier.PassVerifier.verify(PassVerifier.java:98) at org.apache.bcel.verifier.Verifier.doPass3b(Verifier.java:166) at org.apache.bcel.verifier.Verifier.verifyType(Verifier.java:90) at org.apache.bcel.verifier.Verifier.main(Verifier.java:69) Caused by: java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) at java.base/java.util.Objects.checkIndex(Objects.java:361) at java.base/java.util.ArrayList.get(ArrayList.java:427) at org.apache.bcel.verifier.structurals.OperandStack.peek(OperandStack.java:180) at org.apache.bcel.verifier.structurals.OperandStack.peek(OperandStack.java:172) at org.apache.bcel.verifier.structurals.InstConstraintVisitor.visitATHROW(InstConstraintVisitor.java:317) at org.apache.bcel.generic.ATHROW.accept(ATHROW.java:47) at org.apache.bcel.generic.InstructionHandle.accept(InstructionHandle.java:84) at org.apache.bcel.verifier.structurals.ControlFlowGraph$InstructionContextImpl.execute(ControlFlowGraph.java:198) at org.apache.bcel.verifier.structurals.Pass3bVerifier.circulationPump(Pass3bVerifier.java:164) at org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVerifier.java:386) ... 4 more
Attachments
Attachments
Issue Links
- links to