Skip to content

Commit 5e57e82

Browse files
authored
Merge pull request #9191 from hvitved/ruby/taint-tracking-stage
Ruby: Force cached taint tracking predicates to be evaluated in data flow stage
2 parents 1d3b320 + f1f96b7 commit 5e57e82

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,11 @@ private class Argument extends CfgNodes::ExprCfgNode {
199199
/** A collection of cached types and predicates to be evaluated in the same stage. */
200200
cached
201201
private module Cached {
202+
private import TaintTrackingPrivate as TaintTrackingPrivate
203+
202204
cached
203205
newtype TNode =
204-
TExprNode(CfgNodes::ExprCfgNode n) or
206+
TExprNode(CfgNodes::ExprCfgNode n) { TaintTrackingPrivate::forceCachingInSameStage() } or
205207
TReturningNode(CfgNodes::ReturningCfgNode n) or
206208
TSynthReturnNode(CfgScope scope, ReturnKind kind) {
207209
exists(ReturningNode ret |

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ private CfgNodes::ExprNodes::VariableWriteAccessCfgNode variablesInPattern(
6868

6969
cached
7070
private module Cached {
71+
cached
72+
predicate forceCachingInSameStage() { any() }
73+
7174
/**
7275
* Holds if the additional step from `nodeFrom` to `nodeTo` should be included
7376
* in all global taint flow configurations.

0 commit comments

Comments
 (0)