[Soot-list] Missing call graph edges

Peter Kim chpkim at gmail.com
Thu Feb 5 18:04:44 EST 2015


Hi,

I'm extending FlowDroid to construct an Android app's call graph. More
specifically, I get the call graph by modifying Infoflow.runAnalysis(final
ISourceSinkManager sourcesSinks, final Set<String> additionalSeeds) to call
Scene.v().getCallGraph(). The call graph is missing edges in an odd way -
for a function, the graph has some outgoing edges but is missing ones that
should be there. Namely, given the following function (shown in Java rather
than jimple for readability), the called methods should be "get()",
"isFinished()", "remove()", "free()", "size()", "update()", but I'm only
getting "get()", "size()", and "remove()". I don't understand why
"remove()" is included but "free()" is not since they are in the same basic
block. I'm using soot.jimple.toolkits.callgraph.TransitiveTargets to
analyze the call graph.

public void update(float x) {
  for (...size()..) {
  get();
if (isFinished()) {
  remove();
  free();
  }
  }

  if (y) {
  if (x) {
  for (... size()...)  get().update(x);
  } else {
  for (...size()...)  get().update(x);
  }
  }
}

Thank you for your help.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150205/dcffc3db/attachment.html 


More information about the Soot-list mailing list