PY: convert test to not use deleted deprecations

This commit is contained in:
Erik Krogh Kristensen
2022-03-07 13:38:44 +01:00
parent 59db0e7a0f
commit 309e376c6d
9 changed files with 85 additions and 70 deletions

View File

@@ -664,6 +664,14 @@ module DataFlow {
}
}
deprecated private class DataFlowType extends TaintKind {
// this only exists to avoid an empty recursion error in the type checker
DataFlowType() {
this = "Data flow" and
1 = 2
}
}
pragma[noinline]
private predicate dict_construct(ControlFlowNode itemnode, ControlFlowNode dictnode) {
dictnode.(DictNode).getAValue() = itemnode

View File

@@ -1,15 +1,22 @@
import python
import semmle.python.dataflow.DataFlow
class TestConfiguration extends DataFlow::Configuration {
class TestConfiguration extends TaintTracking::Configuration {
TestConfiguration() { this = "Test configuration" }
override predicate isSource(ControlFlowNode source) { source.(NameNode).getId() = "SOURCE" }
override predicate isSource(DataFlow::Node source, TaintKind kind) {
source.asCfgNode().(NameNode).getId() = "SOURCE" and kind instanceof DataFlowType
}
override predicate isSink(ControlFlowNode sink) {
override predicate isSink(DataFlow::Node sink, TaintKind kind) {
exists(CallNode call |
call.getFunction().(NameNode).getId() = "SINK" and
sink = call.getAnArg()
)
sink.asCfgNode() = call.getAnArg()
) and
kind instanceof DataFlowType
}
}
private class DataFlowType extends TaintKind {
DataFlowType() { this = "Data flow" }
}

View File

@@ -2,5 +2,8 @@ import python
import Config
from TestConfiguration config, ControlFlowNode src, ControlFlowNode sink
where config.hasFlow(src, sink)
where
config
.hasSimpleFlow(any(DataFlow::Node s | s.asCfgNode() = src),
any(DataFlow::Node s | s.asCfgNode() = sink))
select src, sink

View File

@@ -1,59 +1,58 @@
WARNING: Predicate getNode has been deprecated and may be removed in future (TestNode.ql:5,77-84)
| Taint Data flow | test.py:3 | SOURCE | |
| Taint Data flow | test.py:6 | SOURCE | |
| Taint Data flow | test.py:7 | s | |
| Taint Data flow | test.py:10 | SOURCE | |
| Taint Data flow | test.py:12 | arg | p0 = Data flow |
| Taint Data flow | test.py:13 | arg | p0 = Data flow |
| Taint Data flow | test.py:16 | source() | |
| Taint Data flow | test.py:17 | t | |
| Taint Data flow | test.py:20 | SOURCE | |
| Taint Data flow | test.py:21 | t | |
| Taint Data flow | test.py:24 | source() | |
| Taint Data flow | test.py:25 | t | |
| Taint Data flow | test.py:31 | SOURCE | |
| Taint Data flow | test.py:37 | SOURCE | |
| Taint Data flow | test.py:41 | t | |
| Taint Data flow | test.py:44 | source() | |
| Taint Data flow | test.py:46 | arg | p0 = Data flow |
| Taint Data flow | test.py:47 | arg | p0 = Data flow |
| Taint Data flow | test.py:49 | arg | p1 = Data flow |
| Taint Data flow | test.py:51 | arg | p1 = Data flow |
| Taint Data flow | test.py:54 | source2() | |
| Taint Data flow | test.py:55 | t | |
| Taint Data flow | test.py:62 | SOURCE | |
| Taint Data flow | test.py:63 | t | |
| Taint Data flow | test.py:67 | SOURCE | |
| Taint Data flow | test.py:70 | t | |
| Taint Data flow | test.py:72 | arg | p0 = Data flow |
| Taint Data flow | test.py:73 | arg | p0 = Data flow |
| Taint Data flow | test.py:76 | SOURCE | |
| Taint Data flow | test.py:77 | hub() | |
| Taint Data flow | test.py:77 | t | |
| Taint Data flow | test.py:78 | t | |
| Taint Data flow | test.py:108 | SOURCE | |
| Taint Data flow | test.py:112 | t | |
| Taint Data flow | test.py:118 | SOURCE | |
| Taint Data flow | test.py:120 | t | |
| Taint Data flow | test.py:128 | SOURCE | |
| Taint Data flow | test.py:129 | t | |
| Taint Data flow | test.py:139 | SOURCE | |
| Taint Data flow | test.py:140 | t | |
| Taint Data flow | test.py:143 | SOURCE | |
| Taint Data flow | test.py:144 | s | |
| Taint Data flow | test.py:145 | s | |
| Taint Data flow | test.py:148 | SOURCE | |
| Taint Data flow | test.py:149 | SOURCE | |
| Taint Data flow | test.py:158 | SOURCE | |
| Taint Data flow | test.py:159 | t | |
| Taint Data flow | test.py:160 | t | |
| Taint Data flow | test.py:163 | t | |
| Taint Data flow | test.py:166 | t | |
| Taint [Data flow] | test.py:148 | List | |
| Taint [Data flow] | test.py:150 | l | |
| Taint [Data flow] | test.py:154 | l | |
| Taint [Data flow] | test.py:154 | list() | |
| Taint {Data flow} | test.py:149 | Dict | |
| Taint {Data flow} | test.py:151 | d | |
| Taint {Data flow} | test.py:155 | d | |
| Taint {Data flow} | test.py:155 | dict() | |
| Taint Data flow | test.py:3 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:6 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:7 | ControlFlowNode for s | |
| Taint Data flow | test.py:10 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:12 | ControlFlowNode for arg | p0 = Data flow |
| Taint Data flow | test.py:13 | ControlFlowNode for arg | p0 = Data flow |
| Taint Data flow | test.py:16 | ControlFlowNode for source() | |
| Taint Data flow | test.py:17 | ControlFlowNode for t | |
| Taint Data flow | test.py:20 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:21 | ControlFlowNode for t | |
| Taint Data flow | test.py:24 | ControlFlowNode for source() | |
| Taint Data flow | test.py:25 | ControlFlowNode for t | |
| Taint Data flow | test.py:31 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:37 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:41 | ControlFlowNode for t | |
| Taint Data flow | test.py:44 | ControlFlowNode for source() | |
| Taint Data flow | test.py:46 | ControlFlowNode for arg | p0 = Data flow |
| Taint Data flow | test.py:47 | ControlFlowNode for arg | p0 = Data flow |
| Taint Data flow | test.py:49 | ControlFlowNode for arg | p1 = Data flow |
| Taint Data flow | test.py:51 | ControlFlowNode for arg | p1 = Data flow |
| Taint Data flow | test.py:54 | ControlFlowNode for source2() | |
| Taint Data flow | test.py:55 | ControlFlowNode for t | |
| Taint Data flow | test.py:62 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:63 | ControlFlowNode for t | |
| Taint Data flow | test.py:67 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:70 | ControlFlowNode for t | |
| Taint Data flow | test.py:72 | ControlFlowNode for arg | p0 = Data flow |
| Taint Data flow | test.py:73 | ControlFlowNode for arg | p0 = Data flow |
| Taint Data flow | test.py:76 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:77 | ControlFlowNode for hub() | |
| Taint Data flow | test.py:77 | ControlFlowNode for t | |
| Taint Data flow | test.py:78 | ControlFlowNode for t | |
| Taint Data flow | test.py:108 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:112 | ControlFlowNode for t | |
| Taint Data flow | test.py:118 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:120 | ControlFlowNode for t | |
| Taint Data flow | test.py:128 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:129 | ControlFlowNode for t | |
| Taint Data flow | test.py:139 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:140 | ControlFlowNode for t | |
| Taint Data flow | test.py:143 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:144 | ControlFlowNode for s | |
| Taint Data flow | test.py:145 | ControlFlowNode for s | |
| Taint Data flow | test.py:148 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:149 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:158 | ControlFlowNode for SOURCE | |
| Taint Data flow | test.py:159 | ControlFlowNode for t | |
| Taint Data flow | test.py:160 | ControlFlowNode for t | |
| Taint Data flow | test.py:163 | ControlFlowNode for t | |
| Taint Data flow | test.py:166 | ControlFlowNode for t | |
| Taint [Data flow] | test.py:148 | ControlFlowNode for List | |
| Taint [Data flow] | test.py:150 | ControlFlowNode for l | |
| Taint [Data flow] | test.py:154 | ControlFlowNode for l | |
| Taint [Data flow] | test.py:154 | ControlFlowNode for list() | |
| Taint {Data flow} | test.py:149 | ControlFlowNode for Dict | |
| Taint {Data flow} | test.py:151 | ControlFlowNode for d | |
| Taint {Data flow} | test.py:155 | ControlFlowNode for d | |
| Taint {Data flow} | test.py:155 | ControlFlowNode for dict() | |

View File

@@ -2,5 +2,5 @@ import python
import Config
from TaintedNode n
select "Taint " + n.getTaintKind(), n.getLocation().toString(), n.getNode().getNode().toString(),
select "Taint " + n.getTaintKind(), n.getLocation().toString(), n.getNode().asCfgNode().toString(),
n.getContext()

View File

@@ -1,4 +1,3 @@
WARNING: Predicate getNode has been deprecated and may be removed in future (TestNode.ql:7,43-50)
| test.py:10:11:10:47 | test.py:10 | MyException() | exception.kind |
| test.py:15:25:15:25 | test.py:15 | e | exception.kind |
| test.py:16:13:16:34 | test.py:16 | Attribute() | exception.info |

View File

@@ -4,4 +4,4 @@ import semmle.python.web.HttpResponse
from TaintedNode node
where not node.getLocation().getFile().inStdlib()
select node.getLocation(), node.getNode().getNode().toString(), node.getTaintKind()
select node.getLocation(), node.getNode().asAstNode().toString(), node.getTaintKind()

View File

@@ -1,4 +1,3 @@
WARNING: Predicate getNode has been deprecated and may be removed in future (TestNode.ql:5,77-84)
| Taint simple.test | visitor.py:10 | arg | p2 = simple.test |
| Taint simple.test | visitor.py:13 | arg | p2 = simple.test |
| Taint simple.test | visitor.py:18 | arg | |

View File

@@ -2,5 +2,5 @@ import python
import ExtensionsLib
from TaintedNode n
select "Taint " + n.getTaintKind(), n.getLocation().toString(), n.getNode().getNode().toString(),
select "Taint " + n.getTaintKind(), n.getLocation().toString(), n.getNode().asAstNode().toString(),
n.getContext()