[Soot-list] Is this a bug in Soot? Same var, different types!!

Bodden, Eric eric.bodden at sit.fraunhofer.de
Thu Aug 28 12:20:27 EDT 2014


Hi.

This is certainly a bug. Please raise an issue in the tracker. Can you attach to the issue the Jimple code of class de.underflow.calc.CalculatorPreferenceActivity?

Cheers,
Eric

On 28.08.2014, at 07:35, Modhi Alsobiehy <m99m20 at hotmail.com> wrote:

> Hi all,
> 
> I have the following issues with the attached code which is supposed to run flowdroid and produce the CFG of the apk..
> 
> 1. for most of the apps, I get an exception indicating that one of the values has two types, resulting from line: PackManager.v().runPacks();
> 
> 2. app.runInfoflow(); does not run for some apps, yet running flowdroid on the app from the command line works!..
> 
> Your quick response is deeply appreciated!
> 
> Thank you,
> Modhi
> 
> code snippets:
> --------------------------
>   String apk = "D:/APKs/xxxx.apk";
>   
>   SetupApplication app = new SetupApplication("D:/AndroidADT/adt-bundle-windows-x86_64-20131030/sdk/platforms",apk);
>   
>    try {
>   app.calculateSourcesSinksEntrypoints("D:/FlowDroid/SourcesAndSinks.txt");
>   
>   app.printSinks();
>   
>   ResultsAvailableHandler rah = new ResAvailable();
>   InfoflowResults ir = new InfoflowResults();
>   ir = app.runInfoflow(rah);
>   System.out.println("FlowDroid Results:");
>   System.in.read(); 
>   if(ir != null)
>    ir.printResults(); // here sometimes ir is null
>   System.out.println("FlowDroid Results ends..");
>   System.in.read();
>   
>     } catch (IOException e) {
>   // TODO Auto-generated catch block
>   e.printStackTrace();
>     } catch (XmlPullParserException e) {
>   // TODO Auto-generated catch block
>   e.printStackTrace();
>     }
>  
>    soot.G.reset();
>  
>    Options.v().set_src_prec(Options.src_prec_apk);
>  
>    Options.v().set_process_dir(Collections.singletonList(apk));
>  
>    Options.v().set_android_jars("D:/AndroidADT/adt-bundle-windows-x86_64-20131030/sdk/platforms");
>  
>    Options.v().set_whole_program(true);
>  
>    Options.v().set_allow_phantom_refs(true);
>  
>    Options.v().set_output_format(Options.output_format_none);
>  
>    Options.v().setPhaseOption("cg.spark", "on");
>  
>    Scene.v().loadNecessaryClasses();      
>  
>    SootMethod entryPoint = app.getEntryPointCreator().createDummyMain();
>  
>    Options.v().set_main_class(entryPoint.getSignature());
>  
>    Scene.v().setEntryPoints(Collections.singletonList(entryPoint));
>  
>    System.out.println(entryPoint.getActiveBody());
>   
>    PackManager.v().runPacks(); // the exception always refers to this line
> ------------------------------------------------------------
> 
> the exception I got:
> ---------------------------
>    
> Exception in thread "main" java.lang.RuntimeException: Value $r0 of type de.underflow.calc.CalculatorPreferenceActivity previously had type android.os.Bundle
>  at soot.jimple.spark.pag.PAG.makeLocalVarNode(PAG.java:543)
>  at soot.jimple.spark.builder.MethodNodeFactory.caseLocal(MethodNodeFactory.java:219)
>  at soot.jimple.internal.JimpleLocal.apply(JimpleLocal.java:136)
>  at soot.jimple.spark.builder.MethodNodeFactory$1.caseAssignStmt(MethodNodeFactory.java:76)
>  at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:238)
>  at soot.jimple.spark.builder.MethodNodeFactory.handleStmt(MethodNodeFactory.java:69)
>  at soot.jimple.spark.pag.MethodPAG.buildNormal(MethodPAG.java:179)
>  at soot.jimple.spark.pag.MethodPAG.build(MethodPAG.java:148)
>  at soot.jimple.spark.solver.OnFlyCallGraph.processReachables(OnFlyCallGraph.java:64)
>  at soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:56)
>  at soot.jimple.spark.builder.ContextInsensitiveBuilder.build(ContextInsensitiveBuilder.java:77)
>  at soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:84)
>  at soot.SceneTransformer.transform(SceneTransformer.java:39)
>  at soot.Transform.apply(Transform.java:90)
>  at soot.RadioScenePack.internalApply(RadioScenePack.java:57)
>  at soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:49)
>  at soot.Pack.apply(Pack.java:116)
>  at soot.PackManager.runWholeProgramPacks(PackManager.java:538)
>  at soot.PackManager.runPacksNormally(PackManager.java:443)
>  at soot.PackManager.runPacks(PackManager.java:389)
>  at apkCFG.CFG.main(CFG.java:79)
> ------------------------------------------
> For another app:
> -----------------------
> Exception in thread "main" java.lang.RuntimeException: Value $r2 of type com.google.ads.AdActivity previously had type com.google.ads.AdSize
>  at soot.jimple.spark.pag.PAG.makeLocalVarNode(PAG.java:543)
>  at soot.jimple.spark.builder.MethodNodeFactory.caseLocal(MethodNodeFactory.java:219)
>  at soot.jimple.internal.JimpleLocal.apply(JimpleLocal.java:136)
>  at soot.jimple.spark.builder.MethodNodeFactory.getNode(MethodNodeFactory.java:60)
>  at soot.jimple.spark.pag.PAG.addCallTarget(PAG.java:1045)
>  at soot.jimple.spark.pag.PAG.addCallTarget(PAG.java:781)
>  at soot.jimple.spark.solver.OnFlyCallGraph.processCallEdges(OnFlyCallGraph.java:74)
>  at soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:57)
>  at soot.jimple.spark.solver.PropWorklist.handleVarNode(PropWorklist.java:122)
>  at soot.jimple.spark.solver.PropWorklist.propagate(PropWorklist.java:52)
>  at soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:152)
>  at soot.SceneTransformer.transform(SceneTransformer.java:39)
>  at soot.Transform.apply(Transform.java:90)
>  at soot.RadioScenePack.internalApply(RadioScenePack.java:57)
>  at soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:49)
>  at soot.Pack.apply(Pack.java:116)
>  at soot.PackManager.runWholeProgramPacks(PackManager.java:538)
>  at soot.PackManager.runPacksNormally(PackManager.java:443)
>  at soot.PackManager.runPacks(PackManager.java:389)
>  at apkCFG.CFG.main(CFG.java:79)
> 
> 
> _______________________________________________
> Soot-list mailing list
> Soot-list at CS.McGill.CA
> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list

--
Prof. Eric Bodden, Ph.D., http://sse.ec-spride.de/ http://bodden.de/
Head of Secure Software Engineering  at Fraunhofer SIT, TU Darmstadt and EC SPRIDE
Tel: +49 6151 16-75422    Fax: +49 6151 16-72051
Room 3.2.14, Mornewegstr. 30, 64293 Darmstadt

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 841 bytes
Desc: Message signed with OpenPGP using GPGMail
Url : http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20140828/6ac1413a/attachment-0001.bin 


More information about the Soot-list mailing list