Skip to content

Commit 309e376

Browse files
committed
PY: convert test to not use deleted deprecations
1 parent 59db0e7 commit 309e376

File tree

9 files changed

+85
-70
lines changed

9 files changed

+85
-70
lines changed

python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,14 @@ module DataFlow {
664664
}
665665
}
666666

667+
deprecated private class DataFlowType extends TaintKind {
668+
// this only exists to avoid an empty recursion error in the type checker
669+
DataFlowType() {
670+
this = "Data flow" and
671+
1 = 2
672+
}
673+
}
674+
667675
pragma[noinline]
668676
private predicate dict_construct(ControlFlowNode itemnode, ControlFlowNode dictnode) {
669677
dictnode.(DictNode).getAValue() = itemnode
Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
11
import python
22
import semmle.python.dataflow.DataFlow
33

4-
class TestConfiguration extends DataFlow::Configuration {
4+
class TestConfiguration extends TaintTracking::Configuration {
55
TestConfiguration() { this = "Test configuration" }
66

7-
override predicate isSource(ControlFlowNode source) { source.(NameNode).getId() = "SOURCE" }
7+
override predicate isSource(DataFlow::Node source, TaintKind kind) {
8+
source.asCfgNode().(NameNode).getId() = "SOURCE" and kind instanceof DataFlowType
9+
}
810

9-
override predicate isSink(ControlFlowNode sink) {
11+
override predicate isSink(DataFlow::Node sink, TaintKind kind) {
1012
exists(CallNode call |
1113
call.getFunction().(NameNode).getId() = "SINK" and
12-
sink = call.getAnArg()
13-
)
14+
sink.asCfgNode() = call.getAnArg()
15+
) and
16+
kind instanceof DataFlowType
1417
}
1518
}
19+
20+
private class DataFlowType extends TaintKind {
21+
DataFlowType() { this = "Data flow" }
22+
}

python/ql/test/library-tests/taint/dataflow/Dataflow.ql

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@ import python
22
import Config
33

44
from TestConfiguration config, ControlFlowNode src, ControlFlowNode sink
5-
where config.hasFlow(src, sink)
5+
where
6+
config
7+
.hasSimpleFlow(any(DataFlow::Node s | s.asCfgNode() = src),
8+
any(DataFlow::Node s | s.asCfgNode() = sink))
69
select src, sink
Lines changed: 58 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,58 @@
1-
WARNING: Predicate getNode has been deprecated and may be removed in future (TestNode.ql:5,77-84)
2-
| Taint Data flow | test.py:3 | SOURCE | |
3-
| Taint Data flow | test.py:6 | SOURCE | |
4-
| Taint Data flow | test.py:7 | s | |
5-
| Taint Data flow | test.py:10 | SOURCE | |
6-
| Taint Data flow | test.py:12 | arg | p0 = Data flow |
7-
| Taint Data flow | test.py:13 | arg | p0 = Data flow |
8-
| Taint Data flow | test.py:16 | source() | |
9-
| Taint Data flow | test.py:17 | t | |
10-
| Taint Data flow | test.py:20 | SOURCE | |
11-
| Taint Data flow | test.py:21 | t | |
12-
| Taint Data flow | test.py:24 | source() | |
13-
| Taint Data flow | test.py:25 | t | |
14-
| Taint Data flow | test.py:31 | SOURCE | |
15-
| Taint Data flow | test.py:37 | SOURCE | |
16-
| Taint Data flow | test.py:41 | t | |
17-
| Taint Data flow | test.py:44 | source() | |
18-
| Taint Data flow | test.py:46 | arg | p0 = Data flow |
19-
| Taint Data flow | test.py:47 | arg | p0 = Data flow |
20-
| Taint Data flow | test.py:49 | arg | p1 = Data flow |
21-
| Taint Data flow | test.py:51 | arg | p1 = Data flow |
22-
| Taint Data flow | test.py:54 | source2() | |
23-
| Taint Data flow | test.py:55 | t | |
24-
| Taint Data flow | test.py:62 | SOURCE | |
25-
| Taint Data flow | test.py:63 | t | |
26-
| Taint Data flow | test.py:67 | SOURCE | |
27-
| Taint Data flow | test.py:70 | t | |
28-
| Taint Data flow | test.py:72 | arg | p0 = Data flow |
29-
| Taint Data flow | test.py:73 | arg | p0 = Data flow |
30-
| Taint Data flow | test.py:76 | SOURCE | |
31-
| Taint Data flow | test.py:77 | hub() | |
32-
| Taint Data flow | test.py:77 | t | |
33-
| Taint Data flow | test.py:78 | t | |
34-
| Taint Data flow | test.py:108 | SOURCE | |
35-
| Taint Data flow | test.py:112 | t | |
36-
| Taint Data flow | test.py:118 | SOURCE | |
37-
| Taint Data flow | test.py:120 | t | |
38-
| Taint Data flow | test.py:128 | SOURCE | |
39-
| Taint Data flow | test.py:129 | t | |
40-
| Taint Data flow | test.py:139 | SOURCE | |
41-
| Taint Data flow | test.py:140 | t | |
42-
| Taint Data flow | test.py:143 | SOURCE | |
43-
| Taint Data flow | test.py:144 | s | |
44-
| Taint Data flow | test.py:145 | s | |
45-
| Taint Data flow | test.py:148 | SOURCE | |
46-
| Taint Data flow | test.py:149 | SOURCE | |
47-
| Taint Data flow | test.py:158 | SOURCE | |
48-
| Taint Data flow | test.py:159 | t | |
49-
| Taint Data flow | test.py:160 | t | |
50-
| Taint Data flow | test.py:163 | t | |
51-
| Taint Data flow | test.py:166 | t | |
52-
| Taint [Data flow] | test.py:148 | List | |
53-
| Taint [Data flow] | test.py:150 | l | |
54-
| Taint [Data flow] | test.py:154 | l | |
55-
| Taint [Data flow] | test.py:154 | list() | |
56-
| Taint {Data flow} | test.py:149 | Dict | |
57-
| Taint {Data flow} | test.py:151 | d | |
58-
| Taint {Data flow} | test.py:155 | d | |
59-
| Taint {Data flow} | test.py:155 | dict() | |
1+
| Taint Data flow | test.py:3 | ControlFlowNode for SOURCE | |
2+
| Taint Data flow | test.py:6 | ControlFlowNode for SOURCE | |
3+
| Taint Data flow | test.py:7 | ControlFlowNode for s | |
4+
| Taint Data flow | test.py:10 | ControlFlowNode for SOURCE | |
5+
| Taint Data flow | test.py:12 | ControlFlowNode for arg | p0 = Data flow |
6+
| Taint Data flow | test.py:13 | ControlFlowNode for arg | p0 = Data flow |
7+
| Taint Data flow | test.py:16 | ControlFlowNode for source() | |
8+
| Taint Data flow | test.py:17 | ControlFlowNode for t | |
9+
| Taint Data flow | test.py:20 | ControlFlowNode for SOURCE | |
10+
| Taint Data flow | test.py:21 | ControlFlowNode for t | |
11+
| Taint Data flow | test.py:24 | ControlFlowNode for source() | |
12+
| Taint Data flow | test.py:25 | ControlFlowNode for t | |
13+
| Taint Data flow | test.py:31 | ControlFlowNode for SOURCE | |
14+
| Taint Data flow | test.py:37 | ControlFlowNode for SOURCE | |
15+
| Taint Data flow | test.py:41 | ControlFlowNode for t | |
16+
| Taint Data flow | test.py:44 | ControlFlowNode for source() | |
17+
| Taint Data flow | test.py:46 | ControlFlowNode for arg | p0 = Data flow |
18+
| Taint Data flow | test.py:47 | ControlFlowNode for arg | p0 = Data flow |
19+
| Taint Data flow | test.py:49 | ControlFlowNode for arg | p1 = Data flow |
20+
| Taint Data flow | test.py:51 | ControlFlowNode for arg | p1 = Data flow |
21+
| Taint Data flow | test.py:54 | ControlFlowNode for source2() | |
22+
| Taint Data flow | test.py:55 | ControlFlowNode for t | |
23+
| Taint Data flow | test.py:62 | ControlFlowNode for SOURCE | |
24+
| Taint Data flow | test.py:63 | ControlFlowNode for t | |
25+
| Taint Data flow | test.py:67 | ControlFlowNode for SOURCE | |
26+
| Taint Data flow | test.py:70 | ControlFlowNode for t | |
27+
| Taint Data flow | test.py:72 | ControlFlowNode for arg | p0 = Data flow |
28+
| Taint Data flow | test.py:73 | ControlFlowNode for arg | p0 = Data flow |
29+
| Taint Data flow | test.py:76 | ControlFlowNode for SOURCE | |
30+
| Taint Data flow | test.py:77 | ControlFlowNode for hub() | |
31+
| Taint Data flow | test.py:77 | ControlFlowNode for t | |
32+
| Taint Data flow | test.py:78 | ControlFlowNode for t | |
33+
| Taint Data flow | test.py:108 | ControlFlowNode for SOURCE | |
34+
| Taint Data flow | test.py:112 | ControlFlowNode for t | |
35+
| Taint Data flow | test.py:118 | ControlFlowNode for SOURCE | |
36+
| Taint Data flow | test.py:120 | ControlFlowNode for t | |
37+
| Taint Data flow | test.py:128 | ControlFlowNode for SOURCE | |
38+
| Taint Data flow | test.py:129 | ControlFlowNode for t | |
39+
| Taint Data flow | test.py:139 | ControlFlowNode for SOURCE | |
40+
| Taint Data flow | test.py:140 | ControlFlowNode for t | |
41+
| Taint Data flow | test.py:143 | ControlFlowNode for SOURCE | |
42+
| Taint Data flow | test.py:144 | ControlFlowNode for s | |
43+
| Taint Data flow | test.py:145 | ControlFlowNode for s | |
44+
| Taint Data flow | test.py:148 | ControlFlowNode for SOURCE | |
45+
| Taint Data flow | test.py:149 | ControlFlowNode for SOURCE | |
46+
| Taint Data flow | test.py:158 | ControlFlowNode for SOURCE | |
47+
| Taint Data flow | test.py:159 | ControlFlowNode for t | |
48+
| Taint Data flow | test.py:160 | ControlFlowNode for t | |
49+
| Taint Data flow | test.py:163 | ControlFlowNode for t | |
50+
| Taint Data flow | test.py:166 | ControlFlowNode for t | |
51+
| Taint [Data flow] | test.py:148 | ControlFlowNode for List | |
52+
| Taint [Data flow] | test.py:150 | ControlFlowNode for l | |
53+
| Taint [Data flow] | test.py:154 | ControlFlowNode for l | |
54+
| Taint [Data flow] | test.py:154 | ControlFlowNode for list() | |
55+
| Taint {Data flow} | test.py:149 | ControlFlowNode for Dict | |
56+
| Taint {Data flow} | test.py:151 | ControlFlowNode for d | |
57+
| Taint {Data flow} | test.py:155 | ControlFlowNode for d | |
58+
| Taint {Data flow} | test.py:155 | ControlFlowNode for dict() | |

python/ql/test/library-tests/taint/dataflow/TestNode.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ import python
22
import Config
33

44
from TaintedNode n
5-
select "Taint " + n.getTaintKind(), n.getLocation().toString(), n.getNode().getNode().toString(),
5+
select "Taint " + n.getTaintKind(), n.getLocation().toString(), n.getNode().asCfgNode().toString(),
66
n.getContext()

python/ql/test/library-tests/taint/exception_traceback/TestNode.expected

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
WARNING: Predicate getNode has been deprecated and may be removed in future (TestNode.ql:7,43-50)
21
| test.py:10:11:10:47 | test.py:10 | MyException() | exception.kind |
32
| test.py:15:25:15:25 | test.py:15 | e | exception.kind |
43
| test.py:16:13:16:34 | test.py:16 | Attribute() | exception.info |

python/ql/test/library-tests/taint/exception_traceback/TestNode.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ import semmle.python.web.HttpResponse
44

55
from TaintedNode node
66
where not node.getLocation().getFile().inStdlib()
7-
select node.getLocation(), node.getNode().getNode().toString(), node.getTaintKind()
7+
select node.getLocation(), node.getNode().asAstNode().toString(), node.getTaintKind()

python/ql/test/library-tests/taint/extensions/TestNode.expected

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
WARNING: Predicate getNode has been deprecated and may be removed in future (TestNode.ql:5,77-84)
21
| Taint simple.test | visitor.py:10 | arg | p2 = simple.test |
32
| Taint simple.test | visitor.py:13 | arg | p2 = simple.test |
43
| Taint simple.test | visitor.py:18 | arg | |

python/ql/test/library-tests/taint/extensions/TestNode.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ import python
22
import ExtensionsLib
33

44
from TaintedNode n
5-
select "Taint " + n.getTaintKind(), n.getLocation().toString(), n.getNode().getNode().toString(),
5+
select "Taint " + n.getTaintKind(), n.getLocation().toString(), n.getNode().asAstNode().toString(),
66
n.getContext()

0 commit comments

Comments
 (0)