diff --git a/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll index 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll index 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll index 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll index 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/experimental/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 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 @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 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 @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 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 @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 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 @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll index 2638347463b..67e93ea7f6f 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForOnActivityResult.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForOnActivityResult.qll index 2638347463b..67e93ea7f6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForOnActivityResult.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForOnActivityResult.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForSerializability.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplForSerializability.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } 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 2638347463b..67e93ea7f6f 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll index 2638347463b..67e93ea7f6f 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll index 2638347463b..67e93ea7f6f 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForHttpClientLibraries.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForHttpClientLibraries.qll index 2638347463b..67e93ea7f6f 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForHttpClientLibraries.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForHttpClientLibraries.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForLibraries.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForLibraries.qll index 2638347463b..67e93ea7f6f 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForLibraries.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForLibraries.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) } diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll index 2638347463b..67e93ea7f6f 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll @@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) { pragma[nomagic] private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } +pragma[nomagic] +private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) } + pragma[nomagic] private predicate store( NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config ) { store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()), contentType) and - read(_, tc.getContent(), _, config) and + hasReadStep(tc.getContent(), config) and stepFilter(node1, node2, config) }