File tree Expand file tree Collapse file tree 12 files changed +82
-103
lines changed
java/ql/test/kotlin/library-tests Expand file tree Collapse file tree 12 files changed +82
-103
lines changed Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.TaintTracking
33
4- class Conf extends TaintTracking:: Configuration {
5- Conf ( ) { this = "qltest:extension-method" }
6-
7- override predicate isSource ( DataFlow:: Node n ) {
4+ module Config implements DataFlow:: ConfigSig {
5+ predicate isSource ( DataFlow:: Node n ) {
86 n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "taint" )
97 }
108
11- override predicate isSink ( DataFlow:: Node n ) {
12- n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" )
13- }
9+ predicate isSink ( DataFlow:: Node n ) { n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" ) }
1410}
1511
16- from DataFlow:: Node src , DataFlow:: Node sink , Conf conf
17- where conf .hasFlow ( src , sink )
12+ module Flow = TaintTracking:: Global< Config > ;
13+
14+ from DataFlow:: Node src , DataFlow:: Node sink
15+ where Flow:: flow ( src , sink )
1816select src , sink
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.TaintTracking
33
4- class Conf extends TaintTracking:: Configuration {
5- Conf ( ) { this = "qltest:foreach-array-iterator" }
6-
7- override predicate isSource ( DataFlow:: Node n ) {
4+ module Config implements DataFlow:: ConfigSig {
5+ predicate isSource ( DataFlow:: Node n ) {
86 n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "taint" )
97 }
108
11- override predicate isSink ( DataFlow:: Node n ) {
12- n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" )
13- }
9+ predicate isSink ( DataFlow:: Node n ) { n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" ) }
1410}
1511
16- from DataFlow:: Node src , DataFlow:: Node sink , Conf conf
17- where conf .hasFlow ( src , sink )
12+ module Flow = TaintTracking:: Global< Config > ;
13+
14+ from DataFlow:: Node src , DataFlow:: Node sink
15+ where Flow:: flow ( src , sink )
1816select src , sink
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.TaintTracking
33
4- class Conf extends TaintTracking :: Configuration {
5- Conf ( ) { this = "qltest:lambdaFlow" }
4+ module Config implements DataFlow :: ConfigSig {
5+ predicate isSource ( DataFlow :: Node n ) { n . asExpr ( ) . ( MethodAccess ) . getMethod ( ) . hasName ( "taint" ) }
66
7- override predicate isSource ( DataFlow:: Node n ) {
8- n .asExpr ( ) .( MethodAccess ) .getMethod ( ) .hasName ( "taint" )
9- }
10-
11- override predicate isSink ( DataFlow:: Node n ) {
12- n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" )
13- }
7+ predicate isSink ( DataFlow:: Node n ) { n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" ) }
148}
159
16- from DataFlow:: Node src , DataFlow:: Node sink , Conf conf
17- where conf .hasFlow ( src , sink )
10+ module Flow = TaintTracking:: Global< Config > ;
11+
12+ from DataFlow:: Node src , DataFlow:: Node sink
13+ where Flow:: flow ( src , sink )
1814select src , sink
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.TaintTracking
33
4- class Conf extends TaintTracking :: Configuration {
5- Conf ( ) { this = "qltest:notNullExprFlow" }
4+ module Config implements DataFlow :: ConfigSig {
5+ predicate isSource ( DataFlow :: Node n ) { n . asExpr ( ) . ( MethodAccess ) . getMethod ( ) . hasName ( "taint" ) }
66
7- override predicate isSource ( DataFlow:: Node n ) {
8- n .asExpr ( ) .( MethodAccess ) .getMethod ( ) .hasName ( "taint" )
9- }
10-
11- override predicate isSink ( DataFlow:: Node n ) {
12- n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" )
13- }
7+ predicate isSink ( DataFlow:: Node n ) { n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" ) }
148}
159
16- from DataFlow:: Node src , DataFlow:: Node sink , Conf conf
17- where conf .hasFlow ( src , sink )
10+ module Flow = TaintTracking:: Global< Config > ;
11+
12+ from DataFlow:: Node src , DataFlow:: Node sink
13+ where Flow:: flow ( src , sink )
1814select src , sink
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.DataFlow
33
4- class Conf extends DataFlow:: Configuration {
5- Conf ( ) { this = "qltest:exprStmtFlow" }
6-
7- override predicate isSource ( DataFlow:: Node n ) {
4+ module Config implements DataFlow:: ConfigSig {
5+ predicate isSource ( DataFlow:: Node n ) {
86 n .asExpr ( ) .( ClassInstanceExpr ) .getType ( ) .( RefType ) .getASupertype * ( ) .hasName ( "Source" )
97 }
108
11- override predicate isSink ( DataFlow:: Node n ) {
12- n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" )
13- }
9+ predicate isSink ( DataFlow:: Node n ) { n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" ) }
1410}
1511
16- from DataFlow:: Node src , DataFlow:: Node sink , Conf conf
17- where conf .hasFlow ( src , sink )
12+ module Flow = DataFlow:: Global< Config > ;
13+
14+ from DataFlow:: Node src , DataFlow:: Node sink
15+ where Flow:: flow ( src , sink )
1816select src , sink
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.TaintTracking
33
4- class Conf extends TaintTracking :: Configuration {
5- Conf ( ) { this = "kttaintconf" }
4+ module Config implements DataFlow :: ConfigSig {
5+ predicate isSource ( DataFlow :: Node n ) { n . asExpr ( ) . ( MethodAccess ) . getMethod ( ) . hasName ( "taint" ) }
66
7- override predicate isSource ( DataFlow:: Node n ) {
8- n .asExpr ( ) .( MethodAccess ) .getMethod ( ) .hasName ( "taint" )
9- }
10-
11- override predicate isSink ( DataFlow:: Node n ) {
12- n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" )
13- }
7+ predicate isSink ( DataFlow:: Node n ) { n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" ) }
148}
159
16- from DataFlow:: Node src , DataFlow:: Node sink , Conf conf
17- where conf .hasFlow ( src , sink )
10+ module Flow = TaintTracking:: Global< Config > ;
11+
12+ from DataFlow:: Node src , DataFlow:: Node sink
13+ where Flow:: flow ( src , sink )
1814select src , sink
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.TaintTracking
33
4- class Conf extends TaintTracking :: Configuration {
5- Conf ( ) { this = "qltest:notNullExprFlow" }
4+ module Config implements DataFlow :: ConfigSig {
5+ predicate isSource ( DataFlow :: Node n ) { n . asExpr ( ) . ( MethodAccess ) . getMethod ( ) . hasName ( "taint" ) }
66
7- override predicate isSource ( DataFlow:: Node n ) {
8- n .asExpr ( ) .( MethodAccess ) .getMethod ( ) .hasName ( "taint" )
9- }
10-
11- override predicate isSink ( DataFlow:: Node n ) {
12- n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" )
13- }
7+ predicate isSink ( DataFlow:: Node n ) { n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .hasName ( "sink" ) }
148}
159
16- from DataFlow:: Node src , DataFlow:: Node sink , Conf conf
17- where conf .hasFlow ( src , sink )
10+ module Flow = TaintTracking:: Global< Config > ;
11+
12+ from DataFlow:: Node src , DataFlow:: Node sink
13+ where Flow:: flow ( src , sink )
1814select src , sink
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.DataFlow
33
4- class Config extends DataFlow:: Configuration {
5- Config ( ) { this = "Config " }
4+ module Config implements DataFlow:: ConfigSig {
5+ predicate isSource ( DataFlow :: Node n ) { n . asExpr ( ) . ( StringLiteral ) . getValue ( ) = "Source " }
66
7- override predicate isSource ( DataFlow:: Node n ) { n .asExpr ( ) .( StringLiteral ) .getValue ( ) = "Source" }
8-
9- override predicate isSink ( DataFlow:: Node n ) {
7+ predicate isSink ( DataFlow:: Node n ) {
108 n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .getName ( ) = "sink"
119 }
1210}
1311
12+ module Flow = DataFlow:: Global< Config > ;
13+
1414query predicate isFinalField ( Field f ) {
1515 exists ( FieldDeclaration f2 | f = f2 .getAField ( ) ) and f .isFinal ( )
1616}
1717
1818from DataFlow:: Node source , DataFlow:: Node sink
19- where any ( Config c ) . hasFlow ( source , sink )
19+ where Flow :: flow ( source , sink )
2020select source , sink
Original file line number Diff line number Diff line change 11import java
22import semmle.code.java.dataflow.DataFlow
33
4- class Config extends DataFlow:: Configuration {
5- Config ( ) { this = "config" }
6-
7- override predicate isSource ( DataFlow:: Node n ) {
4+ module Config implements DataFlow:: ConfigSig {
5+ predicate isSource ( DataFlow:: Node n ) {
86 n .asExpr ( ) .( MethodAccess ) .getCallee ( ) .getName ( ) = "source"
97 }
108
11- override predicate isSink ( DataFlow:: Node n ) {
9+ predicate isSink ( DataFlow:: Node n ) {
1210 n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .getName ( ) = "sink"
1311 }
1412}
1513
16- from Config c , DataFlow:: Node source , DataFlow:: Node sink
17- where c .hasFlow ( source , sink )
14+ module Flow = DataFlow:: Global< Config > ;
15+
16+ from DataFlow:: Node source , DataFlow:: Node sink
17+ where Flow:: flow ( source , sink )
1818select source , sink , source .getEnclosingCallable ( )
Original file line number Diff line number Diff line change @@ -12,21 +12,22 @@ class ShouldBeSunk extends StringLiteral {
1212 }
1313}
1414
15- class Config extends DataFlow:: Configuration {
16- Config ( ) { this = "Config" }
15+ module Config implements DataFlow:: ConfigSig {
1716
18- override predicate isSource ( DataFlow:: Node n ) {
17+ predicate isSource ( DataFlow:: Node n ) {
1918 n .asExpr ( ) instanceof ShouldBeSunk or
2019 n .asExpr ( ) instanceof ShouldNotBeSunk
2120 }
2221
23- override predicate isSink ( DataFlow:: Node n ) {
22+ predicate isSink ( DataFlow:: Node n ) {
2423 n .asExpr ( ) .( Argument ) .getCall ( ) .getCallee ( ) .getName ( ) = "sink"
2524 }
2625}
2726
27+ module Flow = DataFlow:: Global< Config > ;
28+
2829predicate isSunk ( StringLiteral sl ) {
29- exists ( Config c , DataFlow:: Node source | c . hasFlow ( source , _) and sl = source .asExpr ( ) )
30+ exists ( DataFlow:: Node source | Flow :: flow ( source , _) and sl = source .asExpr ( ) )
3031}
3132
3233query predicate shouldBeSunkButIsnt ( ShouldBeSunk src ) { not isSunk ( src ) }
You can’t perform that action at this time.
0 commit comments