mirror of
https://github.com/github/codeql.git
synced 2025-12-20 18:56:32 +01:00
Some files that will change in #1736 have been spared. ./build -j4 target/jars/qlformat find ql/cpp/ql -name "*.ql" -print0 | xargs -0 target/jars/qlformat --input find ql/cpp/ql -name "*.qll" -print0 | xargs -0 target/jars/qlformat --input (cd ql && git checkout 'cpp/ql/src/semmle/code/cpp/ir/implementation/**/*SSA*.qll') buildutils-internal/scripts/pr-checks/sync-identical-files.py --latest
39 lines
1.2 KiB
Plaintext
39 lines
1.2 KiB
Plaintext
import cpp
|
|
import DataflowTestCommon as ASTCommon
|
|
import IRDataflowTestCommon as IRCommon
|
|
import semmle.code.cpp.dataflow.DataFlow as ASTDataFlow
|
|
import semmle.code.cpp.ir.dataflow.DataFlow as IRDataFlow
|
|
|
|
predicate astFlow(Location sourceLocation, Location sinkLocation) {
|
|
exists(
|
|
ASTDataFlow::DataFlow::Node source, ASTDataFlow::DataFlow::Node sink,
|
|
ASTCommon::TestAllocationConfig cfg
|
|
|
|
|
cfg.hasFlow(source, sink) and
|
|
sourceLocation = source.getLocation() and
|
|
sinkLocation = sink.getLocation()
|
|
)
|
|
}
|
|
|
|
predicate irFlow(Location sourceLocation, Location sinkLocation) {
|
|
exists(
|
|
IRDataFlow::DataFlow::Node source, IRDataFlow::DataFlow::Node sink,
|
|
IRCommon::TestAllocationConfig cfg
|
|
|
|
|
cfg.hasFlow(source, sink) and
|
|
sourceLocation = source.getLocation() and
|
|
sinkLocation = sink.getLocation()
|
|
)
|
|
}
|
|
|
|
from Location sourceLocation, Location sinkLocation, string note
|
|
where
|
|
astFlow(sourceLocation, sinkLocation) and
|
|
not irFlow(sourceLocation, sinkLocation) and
|
|
note = "AST only"
|
|
or
|
|
irFlow(sourceLocation, sinkLocation) and
|
|
not astFlow(sourceLocation, sinkLocation) and
|
|
note = "IR only"
|
|
select sourceLocation.toString(), sinkLocation.toString(), note
|