Skip to content

Commit c4b626a

Browse files
committed
Ruby: Use data flow consistency checks from shared pack
1 parent de7c9bd commit c4b626a

File tree

3 files changed

+17
-312
lines changed

3 files changed

+17
-312
lines changed

config/identical-files.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll",
6262
"csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplConsistency.qll",
6363
"python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplConsistency.qll",
64-
"ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll",
6564
"swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplConsistency.qll"
6665
],
6766
"DataFlow Java/C#/Go/Ruby/Python/Swift Flow Summaries": [
@@ -561,4 +560,4 @@
561560
"python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml",
562561
"python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml"
563562
]
564-
}
563+
}
Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
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
}

ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll

Lines changed: 0 additions & 299 deletions
This file was deleted.

0 commit comments

Comments
 (0)