mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
This also rewrites all uses of flow test common to use `DataFlow::ConfigSig`. Note that the removed deprecated aliases are 14 months old by now and, hence, can be safely removed.
42 lines
1.2 KiB
Plaintext
42 lines
1.2 KiB
Plaintext
import TestUtilities.dataflow.FlowTestCommon
|
|
|
|
module AstTest {
|
|
private import semmle.code.cpp.dataflow.TaintTracking
|
|
|
|
module AstSmartPointerTaintConfig implements DataFlow::ConfigSig {
|
|
predicate isSource(DataFlow::Node source) {
|
|
source.asExpr().(FunctionCall).getTarget().getName() = "source"
|
|
}
|
|
|
|
predicate isSink(DataFlow::Node sink) {
|
|
exists(FunctionCall call |
|
|
call.getTarget().getName() = "sink" and
|
|
sink.asExpr() = call.getAnArgument()
|
|
)
|
|
}
|
|
}
|
|
|
|
module AstFlow = TaintTracking::Global<AstSmartPointerTaintConfig>;
|
|
}
|
|
|
|
module IRTest {
|
|
private import semmle.code.cpp.ir.dataflow.TaintTracking
|
|
|
|
module IRSmartPointerTaintConfig implements DataFlow::ConfigSig {
|
|
predicate isSource(DataFlow::Node source) {
|
|
source.asExpr().(FunctionCall).getTarget().getName() = "source"
|
|
}
|
|
|
|
predicate isSink(DataFlow::Node sink) {
|
|
exists(FunctionCall call |
|
|
call.getTarget().getName() = "sink" and
|
|
sink.asExpr() = call.getAnArgument()
|
|
)
|
|
}
|
|
}
|
|
|
|
module IRFlow = TaintTracking::Global<IRSmartPointerTaintConfig>;
|
|
}
|
|
|
|
import MakeTest<MergeTests<AstFlowTest<AstTest::AstFlow>, IRFlowTest<IRTest::IRFlow>>>
|