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 {
282
282
private import ruby as R
283
283
private import codeql.ruby.controlflow.ControlFlowGraph
284
284
private import codeql.ruby.controlflow.BasicBlocks as BasicBlocks
285
+ private import TaintTrackingPrivate as TaintTrackingPrivate
285
286
286
287
class Location = R:: Location ;
287
288
@@ -296,7 +297,10 @@ module VariableCapture {
296
297
BasicBlock getABasicBlockSuccessor ( BasicBlock bb ) { result = bb .getASuccessor ( ) }
297
298
298
299
class CapturedVariable extends LocalVariable {
299
- CapturedVariable ( ) { this .isCaptured ( ) }
300
+ CapturedVariable ( ) {
301
+ this .isCaptured ( ) and
302
+ TaintTrackingPrivate:: forceCachingInSameStage ( )
303
+ }
300
304
301
305
Callable getCallable ( ) {
302
306
exists ( Scope scope | scope = this .getDeclaringScope ( ) |
@@ -426,12 +430,11 @@ module VariableCapture {
426
430
/** A collection of cached types and predicates to be evaluated in the same stage. */
427
431
cached
428
432
private module Cached {
429
- private import TaintTrackingPrivate as TaintTrackingPrivate
430
433
private import codeql.ruby.typetracking.TypeTrackerSpecific as TypeTrackerSpecific
431
434
432
435
cached
433
436
newtype TNode =
434
- TExprNode ( CfgNodes:: ExprCfgNode n ) { TaintTrackingPrivate :: forceCachingInSameStage ( ) } or
437
+ TExprNode ( CfgNodes:: ExprCfgNode n ) or
435
438
TReturningNode ( CfgNodes:: ReturningCfgNode n ) or
436
439
TSsaDefinitionExtNode ( SsaImpl:: DefinitionExt def ) or
437
440
TCapturedVariableNode ( VariableCapture:: CapturedVariable v ) or
Original file line number Diff line number Diff line change @@ -67,9 +67,10 @@ private CfgNodes::ExprNodes::VariableWriteAccessCfgNode variablesInPattern(
67
67
cached
68
68
private module Cached {
69
69
private import codeql.ruby.dataflow.FlowSteps as FlowSteps
70
+ private import codeql.ruby.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon
70
71
71
72
cached
72
- predicate forceCachingInSameStage ( ) { any ( ) }
73
+ predicate forceCachingInSameStage ( ) { DataFlowImplCommon :: forceCachingInSameStage ( ) }
73
74
74
75
/**
75
76
* Holds if the additional step from `nodeFrom` to `nodeTo` should be included
You can’t perform that action at this time.
0 commit comments