Skip to content

Commit 2dc83c5

Browse files
committed
Java/C++/C#: Sync dataflow.
1 parent f880494 commit 2dc83c5

File tree

13 files changed

+195
-65
lines changed

13 files changed

+195
-65
lines changed

cpp/ql/src/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

cpp/ql/src/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

cpp/ql/src/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

cpp/ql/src/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ abstract class Configuration extends string {
5757
/** Holds if data flow through `node` is prohibited. */
5858
predicate isBarrier(Node node) { none() }
5959

60-
/** DEPRECATED: override `isBarrier` instead. */
60+
/** DEPRECATED: override `isBarrierIn` and `isBarrierOut` instead. */
6161
deprecated predicate isBarrierEdge(Node node1, Node node2) { none() }
6262

63+
/** Holds if data flow into `node` is prohibited. */
64+
predicate isBarrierIn(Node node) { none() }
65+
66+
/** Holds if data flow out of `node` is prohibited. */
67+
predicate isBarrierOut(Node node) { none() }
68+
6369
/**
6470
* Holds if the additional flow step from `node1` to `node2` must be taken
6571
* into account in the analysis.
@@ -104,18 +110,22 @@ abstract class Configuration extends string {
104110
}
105111

106112
private predicate inBarrier(Node node, Configuration config) {
107-
config.isBarrier(node) and
113+
config.isBarrierIn(node) and
108114
config.isSource(node)
109115
}
110116

111117
private predicate outBarrier(Node node, Configuration config) {
112-
config.isBarrier(node) and
118+
config.isBarrierOut(node) and
113119
config.isSink(node)
114120
}
115121

116122
private predicate fullBarrier(Node node, Configuration config) {
117-
config.isBarrier(node) and
118-
not config.isSource(node) and
123+
config.isBarrier(node)
124+
or
125+
config.isBarrierIn(node) and
126+
not config.isSource(node)
127+
or
128+
config.isBarrierOut(node) and
119129
not config.isSink(node)
120130
}
121131

0 commit comments

Comments
 (0)