[Soot-list] Erroneous array dimensions in Dex output?
Julian Schütte
julian.schuette at gmx.net
Sat Jan 4 17:37:11 EST 2014
Hi all,
I am quite new to Soot, so I don't know if I'm running into a bug in
Soot/dexpler or if I'm doing sth wrong.
When creating an array of Strings in Soot, Dexpler seems to add one more
dimension than requested. As creating a 0-dimensional array results in a
RuntimeException in soot, this prevents me from creating a 1-dimensional
array in dex.
Usage:
ArrayType arrayType = ArrayType.v(soot.RefType.v("java.lang.String"),
1); // EXPECTING: One-dimensional array String[]
Local array = Jimple.v().newLocal("myArray", arrayType);
body.getLocals().add(array);
NewArrayExpr newArrayExpr = Jimple.v().newNewArrayExpr(arrayType,
IntConstant.v(0));
AssignStmt assignStmt = Jimple.v().newAssignStmt(array, newArrayExpr);
generated.add(assignStmt);
...
body.getUnits().insertBefore(generated, u);
Jimple output looks good:
myArray = newarray (java.lang.String[])[0];
Dex output does not look good:
new-array v0, v8, [[Ljava/lang/String; // GOT: Two-dimensional
array String[][]
move-object/from16 v18, v0 // ??
move-object/from16 v0, v18
Thanks for your help!
Julian
More information about the Soot-list
mailing list