Here's a little gem that causes BCEL's verifier to crash:

.class public Test47
.super java/lang/Object

.method public foo(B)V
        .limit stack 10
        .limit locals 10
        
        iload_1
        ifne ELSE_0
                new java/io/BufferedInputStream
                goto ENDIF_0
        ELSE_0:
                new java/io/FilterInputStream
        ENDIF_0:
        pop
        
        return
.end method

The error generated is as follows:

Exception in thread "main" org.apache.bcel.verifier.exc.AssertionViolatedException: INTERNAL ERROR: Some RuntimeException occured while verify()ing class 'Test47', method 'public void foo(byte arg1)'. Original RuntimeException's stack trace:
---
java.lang.ClassCastException
at org.apache.bcel.generic.ReferenceType.getFirstCommonSuperclass(Reference Type.java:256)
at org.apache.bcel.verifier.structurals.OperandStack.merge(OperandStack.jav a:254)
at org.apache.bcel.verifier.structurals.ControlFlowGraph$InstructionContext Impl.mergeInFrames(ControlFlowGraph.java:246)
at org.apache.bcel.verifier.structurals.ControlFlowGraph$InstructionContext Impl.execute(ControlFlowGraph.java:189)
at org.apache.bcel.verifier.structurals.Pass3bVerifier.circulationPump(Pass 3bVerifier.java:228)
at org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVeri fier.java:342)
at org.apache.bcel.verifier.PassVerifier.verify(PassVerifier.java:108)
at org.apache.bcel.verifier.Verifier.doPass3b(Verifier.java:133)
at ClassVerifier.verify(ClassVerifier.java:33)
at ClassInfo.verify(ClassInfo.java:51)
at Main.main(Main.java:7)
---


at org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVeri fier.java:356)
at org.apache.bcel.verifier.PassVerifier.verify(PassVerifier.java:108)
at org.apache.bcel.verifier.Verifier.doPass3b(Verifier.java:133)
at ClassVerifier.verify(ClassVerifier.java:33)
at ClassInfo.verify(ClassInfo.java:51)
at Main.main(Main.java:7)


It appears that ReferenceType.getFirstCommonSuperclass() is not designed to handle the org.apache.bcel.verifier.structurals.UninitializedObjectType ReferenceType that is used by BCEL's verifier.


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to