File tree Expand file tree Collapse file tree 2 files changed +8
-4
lines changed
ruby/ql/lib/codeql/ruby/dataflow/internal Expand file tree Collapse file tree 2 files changed +8
-4
lines changed Original file line number Diff line number Diff line change @@ -282,6 +282,7 @@ module VariableCapture {
282282 private import ruby as R
283283 private import codeql.ruby.controlflow.ControlFlowGraph
284284 private import codeql.ruby.controlflow.BasicBlocks as BasicBlocks
285+ private import TaintTrackingPrivate as TaintTrackingPrivate
285286
286287 class Location = R:: Location ;
287288
@@ -296,7 +297,10 @@ module VariableCapture {
296297 BasicBlock getABasicBlockSuccessor ( BasicBlock bb ) { result = bb .getASuccessor ( ) }
297298
298299 class CapturedVariable extends LocalVariable {
299- CapturedVariable ( ) { this .isCaptured ( ) }
300+ CapturedVariable ( ) {
301+ this .isCaptured ( ) and
302+ TaintTrackingPrivate:: forceCachingInSameStage ( )
303+ }
300304
301305 Callable getCallable ( ) {
302306 exists ( Scope scope | scope = this .getDeclaringScope ( ) |
@@ -426,12 +430,11 @@ module VariableCapture {
426430/** A collection of cached types and predicates to be evaluated in the same stage. */
427431cached
428432private module Cached {
429- private import TaintTrackingPrivate as TaintTrackingPrivate
430433 private import codeql.ruby.typetracking.TypeTrackerSpecific as TypeTrackerSpecific
431434
432435 cached
433436 newtype TNode =
434- TExprNode ( CfgNodes:: ExprCfgNode n ) { TaintTrackingPrivate :: forceCachingInSameStage ( ) } or
437+ TExprNode ( CfgNodes:: ExprCfgNode n ) or
435438 TReturningNode ( CfgNodes:: ReturningCfgNode n ) or
436439 TSsaDefinitionExtNode ( SsaImpl:: DefinitionExt def ) or
437440 TCapturedVariableNode ( VariableCapture:: CapturedVariable v ) or
Original file line number Diff line number Diff line change @@ -67,9 +67,10 @@ private CfgNodes::ExprNodes::VariableWriteAccessCfgNode variablesInPattern(
6767cached
6868private module Cached {
6969 private import codeql.ruby.dataflow.FlowSteps as FlowSteps
70+ private import codeql.ruby.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon
7071
7172 cached
72- predicate forceCachingInSameStage ( ) { any ( ) }
73+ predicate forceCachingInSameStage ( ) { DataFlowImplCommon :: forceCachingInSameStage ( ) }
7374
7475 /**
7576 * Holds if the additional step from `nodeFrom` to `nodeTo` should be included
You can’t perform that action at this time.
0 commit comments