[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ArrayOutOfBound Exception when decompiling some class files



When decompiling some class files using soot 2.0.1, following exception
is thrown:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at
soot.jimple.internal.JTableSwitchStmt.setTarget(JTableSwitchStmt.java:249)
at
soot.dava.toolkits.base.finders.CycleFinder.fix_MultiEntryPoint(CycleFinder.java:427)
at soot.dava.toolkits.base.finders.CycleFinder.find(CycleFinder.java:74)
at soot.dava.DavaBody.<init>(DavaBody.java:163)
at soot.dava.Dava.newBody(Dava.java:68)
at soot.PackManager.runBodyPacks(PackManager.java:446)
at soot.PackManager.runBodyPacks(PackManager.java:282)
at soot.PackManager.runPacks(PackManager.java:241)
at soot.Main.run(Main.java:172)
at soot.Main.main(Main.java:152)

It is casued by reference of element of a 0-length array, targetBoxes
field of class
JTableSwitchStmt, with index 0.
This field is initialized in the constructor of JTableSwitchStmt using
its argument 'target.'
It seems to me that the value of the argument is always size 0 because
it is newly created just before calling the consturctor of GTableSwitchStmt.
(see file:CycleFinder.java line:407)
I'm not sure how to fix this problem, so I would be very grateful if
anyone let me know how to fix it.

Haruyuki Kawabe
Haruyuki.Kawabe@unisys.co.jp