@@ -6,16 +6,14 @@ StringOps::ConcatenationRoot sinkConcatenation() {
66 result .getConstantStringParts ( ) .matches ( "<sink>%</sink>" )
77}
88
9- class ExampleConfiguration extends TaintTracking:: Configuration {
10- ExampleConfiguration ( ) { this = "ExampleConfiguration" }
11-
12- override predicate isSource ( DataFlow:: Node source ) {
9+ module TestConfig implements DataFlow:: ConfigSig {
10+ predicate isSource ( DataFlow:: Node source ) {
1311 source .asExpr ( ) .( CallExpr ) .getCalleeName ( ) = "SOURCE"
1412 or
1513 source = sourceVariable ( )
1614 }
1715
18- override predicate isSink ( DataFlow:: Node sink ) {
16+ predicate isSink ( DataFlow:: Node sink ) {
1917 exists ( CallExpr callExpr |
2018 callExpr .getCalleeName ( ) = "SINK" and
2119 DataFlow:: valueNode ( callExpr .getArgument ( 0 ) ) = sink
@@ -24,19 +22,40 @@ class ExampleConfiguration extends TaintTracking::Configuration {
2422 sink = sinkConcatenation ( )
2523 }
2624
27- override predicate isSanitizerIn ( DataFlow:: Node node ) { node = sourceVariable ( ) }
25+ predicate isBarrierIn ( DataFlow:: Node node ) { node = sourceVariable ( ) }
2826
29- override predicate isSanitizerOut ( DataFlow:: Node node ) { node = sinkConcatenation ( ) }
27+ predicate isBarrierOut ( DataFlow:: Node node ) { node = sinkConcatenation ( ) }
3028
31- override predicate isSanitizer ( DataFlow:: Node node ) {
29+ additional predicate isBarrier1 ( DataFlow:: Node node ) {
3230 exists ( CallExpr callExpr |
3331 callExpr .getCalleeName ( ) = "SANITIZE" and
3432 DataFlow:: valueNode ( callExpr .getArgument ( 0 ) ) = node
3533 )
3634 }
3735
36+ predicate isBarrier ( DataFlow:: Node node ) {
37+ isBarrier1 ( node )
38+ or
39+ node = TaintTracking:: AdHocWhitelistCheckSanitizer:: getABarrierNode ( )
40+ }
41+ }
42+
43+ module TestFlow = TaintTracking:: Global< TestConfig > ;
44+
45+ class ExampleConfiguration extends TaintTracking:: Configuration {
46+ ExampleConfiguration ( ) { this = "ExampleConfiguration" }
47+
48+ override predicate isSource ( DataFlow:: Node source ) { TestConfig:: isSource ( source ) }
49+
50+ override predicate isSink ( DataFlow:: Node sink ) { TestConfig:: isSink ( sink ) }
51+
52+ override predicate isSanitizerIn ( DataFlow:: Node node ) { TestConfig:: isBarrierIn ( node ) }
53+
54+ override predicate isSanitizerOut ( DataFlow:: Node node ) { TestConfig:: isBarrierOut ( node ) }
55+
56+ override predicate isSanitizer ( DataFlow:: Node node ) { TestConfig:: isBarrier1 ( node ) }
57+
3858 override predicate isSanitizerGuard ( TaintTracking:: SanitizerGuardNode guard ) {
39- // add additional generic sanitizers
4059 guard instanceof TaintTracking:: AdHocWhitelistCheckSanitizer
4160 }
4261}
0 commit comments