1
- import codeql.ruby.AST
2
- import codeql.ruby.CFG
3
- import codeql.ruby.DataFlow:: DataFlow
4
- import codeql.ruby.dataflow.internal.DataFlowPrivate
5
- import codeql.ruby.dataflow.internal.DataFlowImplConsistency:: Consistency
1
+ import codeql.ruby.DataFlow:: DataFlow as DataFlow
2
+ private import codeql.ruby.AST
3
+ private import codeql.ruby.CFG
4
+ private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
5
+ private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific
6
+ private import codeql.dataflow.internal.DataFlowImplConsistency
6
7
7
- private class MyConsistencyConfiguration extends ConsistencyConfiguration {
8
- override predicate postWithInFlowExclude ( Node n ) { n instanceof FlowSummaryNode }
8
+ private module Input implements InputSig < RubyDataFlow > {
9
+ private import RubyDataFlow
9
10
10
- override predicate argHasPostUpdateExclude ( ArgumentNode n ) {
11
+ predicate postWithInFlowExclude ( Node n ) { n instanceof FlowSummaryNode }
12
+
13
+ predicate argHasPostUpdateExclude ( ArgumentNode n ) {
11
14
n instanceof BlockArgumentNode
12
15
or
13
16
n instanceof FlowSummaryNode
@@ -17,15 +20,15 @@ private class MyConsistencyConfiguration extends ConsistencyConfiguration {
17
20
not isNonConstantExpr ( getAPostUpdateNodeForArg ( n .asExpr ( ) ) )
18
21
}
19
22
20
- override predicate postHasUniquePreExclude ( PostUpdateNode n ) {
23
+ predicate postHasUniquePreExclude ( PostUpdateNode n ) {
21
24
exists ( CfgNodes:: ExprCfgNode e , CfgNodes:: ExprCfgNode arg |
22
25
e = getAPostUpdateNodeForArg ( arg ) and
23
26
e != arg and
24
27
n = TExprPostUpdateNode ( e )
25
28
)
26
29
}
27
30
28
- override predicate uniquePostUpdateExclude ( Node n ) {
31
+ predicate uniquePostUpdateExclude ( Node n ) {
29
32
exists ( CfgNodes:: ExprCfgNode e , CfgNodes:: ExprCfgNode arg |
30
33
e = getAPostUpdateNodeForArg ( arg ) and
31
34
e != arg and
@@ -34,7 +37,9 @@ private class MyConsistencyConfiguration extends ConsistencyConfiguration {
34
37
}
35
38
}
36
39
37
- query predicate multipleToString ( Node n , string s ) {
40
+ import MakeConsistency< RubyDataFlow , RubyTaintTracking , Input >
41
+
42
+ query predicate multipleToString ( DataFlow:: Node n , string s ) {
38
43
s = strictconcat ( n .toString ( ) , "," ) and
39
44
strictcount ( n .toString ( ) ) > 1
40
45
}
0 commit comments