11package it .unipr .checker ;
22
3- import java .util .HashSet ;
4- import java .util .Set ;
5-
6- import org .apache .logging .log4j .LogManager ;
7- import org .apache .logging .log4j .Logger ;
8-
93import it .unipr .analysis .MyCache ;
104import it .unipr .analysis .taint .TaintAbstractDomain ;
115import it .unipr .analysis .taint .TaintElement ;
2620import it .unive .lisa .checks .semantic .SemanticCheck ;
2721import it .unive .lisa .program .cfg .CFG ;
2822import it .unive .lisa .program .cfg .statement .Statement ;
23+ import java .util .HashSet ;
24+ import java .util .Set ;
25+ import org .apache .logging .log4j .LogManager ;
26+ import org .apache .logging .log4j .Logger ;
2927
3028public class TimestampDependencyChecker implements
31- SemanticCheck <SimpleAbstractState <MonolithicHeap , TaintAbstractDomain , TypeEnvironment <InferredTypes >>> {
29+ SemanticCheck <SimpleAbstractState <MonolithicHeap , TaintAbstractDomain , TypeEnvironment <InferredTypes >>> {
3230
3331 private static final Logger log = LogManager .getLogger (ReentrancyChecker .class );
3432
35-
3633 private final Set <Statement > sinks = new HashSet <>();
3734
3835 @ Override
3936 public void beforeExecution (
40- CheckToolWithAnalysisResults <SimpleAbstractState <MonolithicHeap , TaintAbstractDomain , TypeEnvironment <InferredTypes >>> tool ) {
37+ CheckToolWithAnalysisResults <
38+ SimpleAbstractState <MonolithicHeap , TaintAbstractDomain , TypeEnvironment <InferredTypes >>> tool ) {
4139
4240 }
4341
4442 @ Override
4543 public boolean visit (
4644 CheckToolWithAnalysisResults <
47- SimpleAbstractState <MonolithicHeap , TaintAbstractDomain , TypeEnvironment <InferredTypes >>> tool ,
45+ SimpleAbstractState <MonolithicHeap , TaintAbstractDomain , TypeEnvironment <InferredTypes >>> tool ,
4846 CFG graph , Statement node ) {
4947
5048 EVMCFG cfg = ((EVMCFG ) graph );
@@ -57,12 +55,11 @@ public boolean visit(
5755 this .sinks .addAll (cfg .getAllJumpI ());
5856 }
5957
60-
6158 if (sinks .contains (node ))
6259 for (AnalyzedCFG <SimpleAbstractState <MonolithicHeap , TaintAbstractDomain ,
6360 TypeEnvironment <InferredTypes >>> result : tool .getResultOf (cfg )) {
6461 AnalysisState <SimpleAbstractState <MonolithicHeap , TaintAbstractDomain ,
65- TypeEnvironment <InferredTypes >>> analysisResult = null ;
62+ TypeEnvironment <InferredTypes >>> analysisResult = null ;
6663
6764 try {
6865 analysisResult = result .getAnalysisStateBefore (node );
@@ -82,7 +79,7 @@ public boolean visit(
8279 if (node instanceof Sha3 || node instanceof Sstore || node instanceof Jumpi ) {
8380 if (checkTaintTwoPops (taintedStack ))
8481 raiseWarning (node , tool , cfg );
85- } else if (node instanceof Jump ) {
82+ } else if (node instanceof Jump ) {
8683 if (checkTaintOnePop (taintedStack ))
8784 raiseWarning (node , tool , cfg );
8885 }
@@ -104,7 +101,6 @@ else if (firstStackElement.isTaint() || secondStackElement.isTaint())
104101 return false ;
105102 }
106103
107-
108104 // 1 pop()
109105 private boolean checkTaintOnePop (TaintAbstractDomain taintedStack ) {
110106 TaintElement firstStackElement = taintedStack .getFirstElement ();
@@ -116,7 +112,6 @@ else if (firstStackElement.isTaint())
116112 return false ;
117113 }
118114
119-
120115 private void raiseWarning (Statement sink , CheckToolWithAnalysisResults <
121116 SimpleAbstractState <MonolithicHeap , TaintAbstractDomain , TypeEnvironment <InferredTypes >>> tool ,
122117 EVMCFG cfg ) {
0 commit comments