Skip to content

Commit 34130d5

Browse files
committed
C++: Add library tests for YML extension models.
1 parent 3f66b63 commit 34130d5

File tree

11 files changed

+73
-0
lines changed

11 files changed

+73
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
testFailures
2+
failures
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import TestUtilities.dataflow.FlowTestCommon
2+
import cpp
3+
import semmle.code.cpp.ir.dataflow.DataFlow
4+
import semmle.code.cpp.dataflow.ExternalFlow
5+
6+
module IRTest {
7+
private import semmle.code.cpp.ir.IR
8+
private import semmle.code.cpp.ir.dataflow.TaintTracking
9+
10+
/** Common data flow configuration to be used by tests. */
11+
module TestAllocationConfig implements DataFlow::ConfigSig {
12+
predicate isSource(DataFlow::Node source) {
13+
sourceNode(source, _)
14+
}
15+
16+
predicate isSink(DataFlow::Node sink) {
17+
sinkNode(sink, "test-sink")
18+
}
19+
}
20+
21+
module IRFlow = TaintTracking::Global<TestAllocationConfig>;
22+
}
23+
24+
import MakeTest<IRFlowTest<IRTest::IRFlow>>

cpp/ql/test/library-tests/dataflow/external-models/sinks.expected

Whitespace-only changes.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import cpp
2+
import semmle.code.cpp.ir.dataflow.DataFlow
3+
import semmle.code.cpp.dataflow.ExternalFlow
4+
5+
from DataFlow::Node node, string kind
6+
where sinkNode(node, kind)
7+
select node, kind

cpp/ql/test/library-tests/dataflow/external-models/sources.expected

Whitespace-only changes.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import cpp
2+
import semmle.code.cpp.ir.dataflow.DataFlow
3+
import semmle.code.cpp.dataflow.ExternalFlow
4+
5+
from DataFlow::Node node, string kind
6+
where sourceNode(node, kind)
7+
select node, kind

cpp/ql/test/library-tests/dataflow/external-models/steps.expected

Whitespace-only changes.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import cpp
2+
import semmle.code.cpp.ir.dataflow.DataFlow
3+
import semmle.code.cpp.dataflow.ExternalFlow
4+
import semmle.code.cpp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
5+
6+
from DataFlow::Node node1, DataFlow::Node node2
7+
where FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(node1, node2, _)
8+
select node1, node2
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
int ymlSource();
3+
void ymlSink(int value);
4+
int ymlStep(int value);
5+
6+
void test() {
7+
int x = ymlSource();
8+
9+
ymlSink(0);
10+
11+
ymlSink(x); // $ MISSING: ir
12+
13+
int y = ymlStep(x);
14+
15+
ymlSink(y); // $ MISSING: ir
16+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
| Dubious namespace "" in sink model. |
2+
| Dubious namespace "" in source model. |
3+
| Dubious namespace "" in summary model. |
4+
| Dubious type "" in sink model. |
5+
| Dubious type "" in source model. |
6+
| Dubious type "" in summary model. |
7+
| Invalid kind "remote-sink" in sink model. |

0 commit comments

Comments
 (0)