Files
codeql/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql
Rasmus Wriedt Larsen c952f6a648 Python: Update rest of tests to new dataflow lib
I had missed these originally, since I had just fixed the ones that were
highlighted in the actions logs, thinking they had covered everything :(
2023-12-04 14:49:40 +01:00

28 lines
873 B
Plaintext

/**
* Test that the new data-flow analysis can connect any two
* data-flow nodes that the points-to analysis can.
*/
private import python
import semmle.python.dataflow.new.DataFlow
predicate pointsToOrigin(DataFlow::CfgNode pointer, DataFlow::CfgNode origin) {
origin.getNode() = pointer.getNode().pointsTo().getOrigin()
}
module PointsToConfig implements DataFlow::ConfigSig {
predicate isSource(DataFlow::Node node) { pointsToOrigin(_, node) }
predicate isSink(DataFlow::Node node) { pointsToOrigin(node, _) }
}
module PointsToFlow = DataFlow::Global<PointsToConfig>;
from DataFlow::Node pointer, DataFlow::Node origin
where
exists(pointer.getLocation().getFile().getRelativePath()) and
exists(origin.getLocation().getFile().getRelativePath()) and
pointsToOrigin(pointer, origin) and
not PointsToFlow::flow(origin, pointer)
select origin, pointer