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
67
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
910
10- override predicate argHasPostUpdateExclude ( ArgumentNode n ) {
11+ predicate postWithInFlowExclude ( Node n ) { n instanceof FlowSummaryNode }
12+
13+ predicate argHasPostUpdateExclude ( ArgumentNode n ) {
1114 n instanceof BlockArgumentNode
1215 or
1316 n instanceof FlowSummaryNode
@@ -17,15 +20,15 @@ private class MyConsistencyConfiguration extends ConsistencyConfiguration {
1720 not isNonConstantExpr ( getAPostUpdateNodeForArg ( n .asExpr ( ) ) )
1821 }
1922
20- override predicate postHasUniquePreExclude ( PostUpdateNode n ) {
23+ predicate postHasUniquePreExclude ( PostUpdateNode n ) {
2124 exists ( CfgNodes:: ExprCfgNode e , CfgNodes:: ExprCfgNode arg |
2225 e = getAPostUpdateNodeForArg ( arg ) and
2326 e != arg and
2427 n = TExprPostUpdateNode ( e )
2528 )
2629 }
2730
28- override predicate uniquePostUpdateExclude ( Node n ) {
31+ predicate uniquePostUpdateExclude ( Node n ) {
2932 exists ( CfgNodes:: ExprCfgNode e , CfgNodes:: ExprCfgNode arg |
3033 e = getAPostUpdateNodeForArg ( arg ) and
3134 e != arg and
@@ -34,7 +37,9 @@ private class MyConsistencyConfiguration extends ConsistencyConfiguration {
3437 }
3538}
3639
37- query predicate multipleToString ( Node n , string s ) {
40+ import MakeConsistency< RubyDataFlow , RubyTaintTracking , Input >
41+
42+ query predicate multipleToString ( DataFlow:: Node n , string s ) {
3843 s = strictconcat ( n .toString ( ) , "," ) and
3944 strictcount ( n .toString ( ) ) > 1
4045}
0 commit comments