From 7ffd9b4f9e405ea01cf53e07dd85a8aee493bf13 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 11 Nov 2021 11:26:21 +0100 Subject: [PATCH] Dataflow: Include read/store steps when finding non-hidden return. --- .../lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll | 6 +++++- .../lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll | 6 +++++- .../lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll | 6 +++++- .../lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll | 6 +++++- .../semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll | 6 +++++- .../semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll | 6 +++++- .../semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll | 6 +++++- .../semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll | 6 +++++- .../semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll | 6 +++++- .../semmle/code/csharp/dataflow/internal/DataFlowImpl.qll | 6 +++++- .../semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll | 6 +++++- .../semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll | 6 +++++- .../semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll | 6 +++++- .../semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll | 6 +++++- .../lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll | 6 +++++- .../semmle/code/java/dataflow/internal/DataFlowImpl2.qll | 6 +++++- .../semmle/code/java/dataflow/internal/DataFlowImpl3.qll | 6 +++++- .../semmle/code/java/dataflow/internal/DataFlowImpl4.qll | 6 +++++- .../semmle/code/java/dataflow/internal/DataFlowImpl5.qll | 6 +++++- .../semmle/code/java/dataflow/internal/DataFlowImpl6.qll | 6 +++++- .../dataflow/internal/DataFlowImplForSerializability.qll | 6 +++++- .../semmle/python/dataflow/new/internal/DataFlowImpl.qll | 6 +++++- .../semmle/python/dataflow/new/internal/DataFlowImpl2.qll | 6 +++++- .../semmle/python/dataflow/new/internal/DataFlowImpl3.qll | 6 +++++- .../semmle/python/dataflow/new/internal/DataFlowImpl4.qll | 6 +++++- ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll | 6 +++++- ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll | 6 +++++- 27 files changed, 135 insertions(+), 27 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll index 705e3aa437c..08030e0b35b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll index 705e3aa437c..08030e0b35b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll index 705e3aa437c..08030e0b35b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll index 705e3aa437c..08030e0b35b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll index 705e3aa437c..08030e0b35b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll index 705e3aa437c..08030e0b35b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll index 705e3aa437c..08030e0b35b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll index 705e3aa437c..08030e0b35b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll index 705e3aa437c..08030e0b35b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll index 705e3aa437c..08030e0b35b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll index 705e3aa437c..08030e0b35b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll index 705e3aa437c..08030e0b35b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForSerializability.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForSerializability.qll index 705e3aa437c..08030e0b35b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForSerializability.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForSerializability.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll index 705e3aa437c..08030e0b35b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll index 705e3aa437c..08030e0b35b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll index 705e3aa437c..08030e0b35b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll index 705e3aa437c..08030e0b35b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll index 705e3aa437c..08030e0b35b 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /** diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll index 705e3aa437c..08030e0b35b 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll @@ -3788,7 +3788,11 @@ private module Subpaths { private PathNodeImpl localStepToHidden(PathNodeImpl n) { n.getASuccessorImpl() = result and result.isHidden() and - localFlowBigStep(n.getNodeEx(), result.getNodeEx(), _, _, _, _) + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) } /**