secure-software-engineering / FlowDroid

FlowDroid Static Data Flow Tracker
GNU Lesser General Public License v2.1
1.05k stars 298 forks source link

Question about the SinkPropagationRule 🥂 #459

Open LeoYelton opened 2 years ago

LeoYelton commented 2 years ago

Hi, steven professor or group member! I found there maybe have some bug in soot.jimple.infoflow.problems.rules.SinkPropagationRule#checkForSink. I use the latest develop branch. In the logic of

if (getResults().addResult(new AbstractionAtSink(sinkInfo.getDefinition(), source, stmt))) {
   killState=true
}

1.First question is addResult Method return the boolean value continueAnalysis,
so maybeif(continueAnalysis) killState=true should be change to if(!continueAnalysis) killState=true Am I right?

2.Second question is: And I don't understand the logic of changing killState will influence the variable killAllState. In the thesis page 37, I see the design reason is to abort the other RuleEngine runing when it is killState . But in the code , once changing killState will affect the global value killAllState forever and this variable only define one time when using manager to create the singleton object SinkPropagationRule. And there are no other method to make killAll back to false value again . Maybe there have some logic difference from paper? Hope for you reply! Thank U~~~~