|
1 | 1 | private import python |
2 | | -import experimental.dataflow.DataFlow |
| 2 | +import semmle.python.dataflow.new.DataFlow |
3 | 3 |
|
4 | | -predicate pointsToOrigin(DataFlow::DataFlowCfgNode pointer, DataFlow::DataFlowCfgNode origin) { |
5 | | - origin = pointer.pointsTo().getOrigin() |
| 4 | +predicate pointsToOrigin(DataFlow::CfgNode pointer, DataFlow::CfgNode origin) { |
| 5 | + origin.getNode() = pointer.getNode().pointsTo().getOrigin() |
6 | 6 | } |
7 | 7 |
|
8 | 8 | class PointsToConfiguration extends DataFlow::Configuration { |
9 | 9 | PointsToConfiguration() { this = "PointsToConfiguration" } |
10 | 10 |
|
11 | | - override predicate isSource(DataFlow::Node node) { pointsToOrigin(_, node.asCfgNode()) } |
| 11 | + override predicate isSource(DataFlow::Node node) { pointsToOrigin(_, node) } |
12 | 12 |
|
13 | | - override predicate isSink(DataFlow::Node node) { pointsToOrigin(node.asCfgNode(), _) } |
| 13 | + override predicate isSink(DataFlow::Node node) { pointsToOrigin(node, _) } |
14 | 14 | } |
15 | 15 |
|
16 | | -predicate hasFlow(ControlFlowNode origin, ControlFlowNode pointer) { |
| 16 | +predicate hasFlow(DataFlow::Node origin, DataFlow::Node pointer) { |
17 | 17 | exists(PointsToConfiguration config, DataFlow::PathNode source, DataFlow::PathNode sink | |
18 | | - source.getNode().asCfgNode() = origin and |
19 | | - sink.getNode().asCfgNode() = pointer and |
| 18 | + source.getNode() = origin and |
| 19 | + sink.getNode() = pointer and |
20 | 20 | config.hasFlowPath(source, sink) |
21 | 21 | ) |
22 | 22 | } |
23 | 23 |
|
24 | | -from DataFlow::DataFlowCfgNode pointer, DataFlow::DataFlowCfgNode origin |
| 24 | +from DataFlow::Node pointer, DataFlow::Node origin |
25 | 25 | where |
26 | 26 | pointsToOrigin(pointer, origin) and |
27 | 27 | not hasFlow(origin, pointer) |
|
0 commit comments