mirror of
https://github.com/github/codeql.git
synced 2026-04-30 19:26:02 +02:00
Python: FIx flow
This commit is contained in:
@@ -1173,7 +1173,7 @@ module unpackinAssignment {
|
||||
}
|
||||
|
||||
predicate unpackingAssignmentElementReadStep(Node nodeFrom, Content c, Node nodeTo) {
|
||||
exists(UnpackingAssignmentTarget target, int index, ControlFlowNode element |
|
||||
exists(UnpackingAssignmentTarget target, int index, ControlFlowNode element, boolean precise |
|
||||
target instanceof SequenceNode
|
||||
|
|
||||
nodeFrom.asCfgNode() = target and
|
||||
@@ -1183,16 +1183,24 @@ module unpackinAssignment {
|
||||
c instanceof ListElementContent
|
||||
or
|
||||
target instanceof TupleNode and
|
||||
c.(TupleElementContent).getIndex() = index
|
||||
if precise = true
|
||||
then c.(TupleElementContent).getIndex() = index
|
||||
else c instanceof TupleElementContent // This could get big if big tuples exist
|
||||
) and
|
||||
(
|
||||
if element instanceof SequenceNode
|
||||
then nodeTo = TIterableSequence(element)
|
||||
then
|
||||
nodeTo = TIterableSequence(element) and
|
||||
precise = true
|
||||
else
|
||||
if element.getNode() instanceof Starred
|
||||
then nodeTo = TIterableElement(element)
|
||||
else
|
||||
nodeTo.asVar().getDefinition().(MultiAssignmentDefinition).getDefiningNode() = element
|
||||
then
|
||||
nodeTo = TIterableElement(element) and
|
||||
precise = false
|
||||
else (
|
||||
nodeTo.asVar().getDefinition().(MultiAssignmentDefinition).getDefiningNode() = element and
|
||||
precise = true
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -71,6 +71,7 @@ edges
|
||||
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:556:31:556:36 | ControlFlowNode for SOURCE |
|
||||
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:556:41:556:46 | ControlFlowNode for SOURCE |
|
||||
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:584:12:584:17 | ControlFlowNode for SOURCE |
|
||||
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:584:31:584:36 | ControlFlowNode for SOURCE |
|
||||
| test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test | test.py:692:16:692:21 | ControlFlowNode for SOURCE |
|
||||
| test.py:20:1:20:6 | GSSA Variable SOURCE | test.py:0:0:0:0 | ModuleVariableNode for Global Variable SOURCE in Module test |
|
||||
| test.py:20:10:20:17 | ControlFlowNode for Str | test.py:20:1:20:6 | GSSA Variable SOURCE |
|
||||
@@ -238,6 +239,7 @@ edges
|
||||
| test.py:546:18:546:23 | ControlFlowNode for SOURCE | test.py:546:10:546:34 | ControlFlowNode for Tuple [Tuple element at index 1] |
|
||||
| test.py:547:5:547:5 | SSA variable a | test.py:548:10:548:10 | ControlFlowNode for a |
|
||||
| test.py:547:5:547:12 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:547:5:547:5 | SSA variable a |
|
||||
| test.py:547:5:547:12 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:547:8:547:9 | IterableElement |
|
||||
| test.py:547:5:547:12 | ControlFlowNode for Tuple [Tuple element at index 1] | test.py:547:8:547:9 | IterableElement |
|
||||
| test.py:547:8:547:9 | IterableElement | test.py:547:8:547:9 | SSA variable b [List element] |
|
||||
| test.py:547:8:547:9 | SSA variable b [List element] | test.py:550:10:550:10 | ControlFlowNode for b [List element] |
|
||||
@@ -319,8 +321,13 @@ edges
|
||||
| test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] | test.py:596:6:596:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] |
|
||||
| test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] | test.py:605:5:605:19 | IterableSequence [Tuple element at index 0, Tuple element at index 0] |
|
||||
| test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] | test.py:614:6:614:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] |
|
||||
| test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] | test.py:596:6:596:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] |
|
||||
| test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] | test.py:605:5:605:19 | IterableSequence [Tuple element at index 0, Tuple element at index 2] |
|
||||
| test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:584:12:584:36 | ControlFlowNode for Tuple [Tuple element at index 0] |
|
||||
| test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:584:31:584:36 | ControlFlowNode for SOURCE |
|
||||
| test.py:584:12:584:36 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] |
|
||||
| test.py:584:12:584:36 | ControlFlowNode for Tuple [Tuple element at index 2] | test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] |
|
||||
| test.py:584:31:584:36 | ControlFlowNode for SOURCE | test.py:584:12:584:36 | ControlFlowNode for Tuple [Tuple element at index 2] |
|
||||
| test.py:587:5:587:19 | ControlFlowNode for List [List element, List element] | test.py:587:6:587:14 | IterableSequence [List element] |
|
||||
| test.py:587:5:587:19 | ControlFlowNode for List [List element, Tuple element at index 0] | test.py:587:6:587:14 | IterableSequence [Tuple element at index 0] |
|
||||
| test.py:587:5:587:19 | IterableElement [Tuple element at index 0] | test.py:587:5:587:19 | ControlFlowNode for List [List element, Tuple element at index 0] |
|
||||
@@ -341,17 +348,39 @@ edges
|
||||
| test.py:590:12:590:13 | ControlFlowNode for a2 [List element] | test.py:590:12:590:16 | ControlFlowNode for Subscript |
|
||||
| test.py:591:10:591:11 | ControlFlowNode for a2 [List element] | test.py:591:10:591:14 | ControlFlowNode for Subscript |
|
||||
| test.py:596:6:596:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] | test.py:596:7:596:13 | IterableSequence [Tuple element at index 0] |
|
||||
| test.py:596:6:596:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] | test.py:596:7:596:13 | IterableSequence [Tuple element at index 2] |
|
||||
| test.py:596:7:596:8 | SSA variable a1 | test.py:597:10:597:11 | ControlFlowNode for a1 |
|
||||
| test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:596:6:596:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] |
|
||||
| test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:596:7:596:8 | SSA variable a1 |
|
||||
| test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:596:11:596:13 | IterableElement |
|
||||
| test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 2] | test.py:596:6:596:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] |
|
||||
| test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 2] | test.py:596:11:596:13 | IterableElement |
|
||||
| test.py:596:7:596:13 | IterableSequence [Tuple element at index 0] | test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 0] |
|
||||
| test.py:596:7:596:13 | IterableSequence [Tuple element at index 2] | test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 2] |
|
||||
| test.py:596:11:596:13 | IterableElement | test.py:596:11:596:13 | SSA variable a2 [List element] |
|
||||
| test.py:596:11:596:13 | SSA variable a2 [List element] | test.py:599:12:599:13 | ControlFlowNode for a2 [List element] |
|
||||
| test.py:596:11:596:13 | SSA variable a2 [List element] | test.py:600:10:600:11 | ControlFlowNode for a2 [List element] |
|
||||
| test.py:599:12:599:13 | ControlFlowNode for a2 [List element] | test.py:599:12:599:16 | ControlFlowNode for Subscript |
|
||||
| test.py:600:10:600:11 | ControlFlowNode for a2 [List element] | test.py:600:10:600:14 | ControlFlowNode for Subscript |
|
||||
| test.py:605:5:605:19 | ControlFlowNode for List [List element, Tuple element at index 0] | test.py:605:7:605:13 | IterableSequence [Tuple element at index 0] |
|
||||
| test.py:605:5:605:19 | ControlFlowNode for List [List element, Tuple element at index 2] | test.py:605:7:605:13 | IterableSequence [Tuple element at index 2] |
|
||||
| test.py:605:5:605:19 | IterableElement [Tuple element at index 0] | test.py:605:5:605:19 | ControlFlowNode for List [List element, Tuple element at index 0] |
|
||||
| test.py:605:5:605:19 | IterableElement [Tuple element at index 2] | test.py:605:5:605:19 | ControlFlowNode for List [List element, Tuple element at index 2] |
|
||||
| test.py:605:5:605:19 | IterableSequence [Tuple element at index 0, Tuple element at index 0] | test.py:605:5:605:19 | IterableElement [Tuple element at index 0] |
|
||||
| test.py:605:5:605:19 | IterableSequence [Tuple element at index 0, Tuple element at index 2] | test.py:605:5:605:19 | IterableElement [Tuple element at index 2] |
|
||||
| test.py:605:7:605:8 | SSA variable a1 | test.py:606:10:606:11 | ControlFlowNode for a1 |
|
||||
| test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:605:5:605:19 | ControlFlowNode for List [List element, Tuple element at index 0] |
|
||||
| test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:605:7:605:8 | SSA variable a1 |
|
||||
| test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 0] | test.py:605:11:605:13 | IterableElement |
|
||||
| test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 2] | test.py:605:5:605:19 | ControlFlowNode for List [List element, Tuple element at index 2] |
|
||||
| test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 2] | test.py:605:11:605:13 | IterableElement |
|
||||
| test.py:605:7:605:13 | IterableSequence [Tuple element at index 0] | test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 0] |
|
||||
| test.py:605:7:605:13 | IterableSequence [Tuple element at index 2] | test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 2] |
|
||||
| test.py:605:11:605:13 | IterableElement | test.py:605:11:605:13 | SSA variable a2 [List element] |
|
||||
| test.py:605:11:605:13 | SSA variable a2 [List element] | test.py:608:12:608:13 | ControlFlowNode for a2 [List element] |
|
||||
| test.py:605:11:605:13 | SSA variable a2 [List element] | test.py:609:10:609:11 | ControlFlowNode for a2 [List element] |
|
||||
| test.py:608:12:608:13 | ControlFlowNode for a2 [List element] | test.py:608:12:608:16 | ControlFlowNode for Subscript |
|
||||
| test.py:609:10:609:11 | ControlFlowNode for a2 [List element] | test.py:609:10:609:14 | ControlFlowNode for Subscript |
|
||||
| test.py:614:6:614:14 | ControlFlowNode for List [List element] | test.py:614:6:614:18 | ControlFlowNode for Tuple [Tuple element at index 0, List element] |
|
||||
| test.py:614:6:614:14 | ControlFlowNode for List [List element] | test.py:614:7:614:8 | SSA variable a1 |
|
||||
| test.py:614:6:614:14 | ControlFlowNode for List [List element] | test.py:614:11:614:13 | IterableElement |
|
||||
@@ -656,8 +685,11 @@ nodes
|
||||
| test.py:577:12:577:13 | ControlFlowNode for a2 | semmle.label | ControlFlowNode for a2 |
|
||||
| test.py:578:10:578:11 | ControlFlowNode for a3 | semmle.label | ControlFlowNode for a3 |
|
||||
| test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] |
|
||||
| test.py:584:11:584:47 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] |
|
||||
| test.py:584:12:584:17 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
|
||||
| test.py:584:12:584:36 | ControlFlowNode for Tuple [Tuple element at index 0] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0] |
|
||||
| test.py:584:12:584:36 | ControlFlowNode for Tuple [Tuple element at index 2] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 2] |
|
||||
| test.py:584:31:584:36 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE |
|
||||
| test.py:587:5:587:19 | ControlFlowNode for List [List element, List element] | semmle.label | ControlFlowNode for List [List element, List element] |
|
||||
| test.py:587:5:587:19 | ControlFlowNode for List [List element, Tuple element at index 0] | semmle.label | ControlFlowNode for List [List element, Tuple element at index 0] |
|
||||
| test.py:587:5:587:19 | IterableElement [Tuple element at index 0] | semmle.label | IterableElement [Tuple element at index 0] |
|
||||
@@ -676,17 +708,37 @@ nodes
|
||||
| test.py:591:10:591:11 | ControlFlowNode for a2 [List element] | semmle.label | ControlFlowNode for a2 [List element] |
|
||||
| test.py:591:10:591:14 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
|
||||
| test.py:596:6:596:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 0] |
|
||||
| test.py:596:6:596:18 | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0, Tuple element at index 2] |
|
||||
| test.py:596:7:596:8 | SSA variable a1 | semmle.label | SSA variable a1 |
|
||||
| test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 0] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0] |
|
||||
| test.py:596:7:596:13 | ControlFlowNode for Tuple [Tuple element at index 2] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 2] |
|
||||
| test.py:596:7:596:13 | IterableSequence [Tuple element at index 0] | semmle.label | IterableSequence [Tuple element at index 0] |
|
||||
| test.py:596:7:596:13 | IterableSequence [Tuple element at index 2] | semmle.label | IterableSequence [Tuple element at index 2] |
|
||||
| test.py:596:11:596:13 | IterableElement | semmle.label | IterableElement |
|
||||
| test.py:596:11:596:13 | SSA variable a2 [List element] | semmle.label | SSA variable a2 [List element] |
|
||||
| test.py:597:10:597:11 | ControlFlowNode for a1 | semmle.label | ControlFlowNode for a1 |
|
||||
| test.py:599:12:599:13 | ControlFlowNode for a2 [List element] | semmle.label | ControlFlowNode for a2 [List element] |
|
||||
| test.py:599:12:599:16 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
|
||||
| test.py:600:10:600:11 | ControlFlowNode for a2 [List element] | semmle.label | ControlFlowNode for a2 [List element] |
|
||||
| test.py:600:10:600:14 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
|
||||
| test.py:605:5:605:19 | ControlFlowNode for List [List element, Tuple element at index 0] | semmle.label | ControlFlowNode for List [List element, Tuple element at index 0] |
|
||||
| test.py:605:5:605:19 | ControlFlowNode for List [List element, Tuple element at index 2] | semmle.label | ControlFlowNode for List [List element, Tuple element at index 2] |
|
||||
| test.py:605:5:605:19 | IterableElement [Tuple element at index 0] | semmle.label | IterableElement [Tuple element at index 0] |
|
||||
| test.py:605:5:605:19 | IterableElement [Tuple element at index 2] | semmle.label | IterableElement [Tuple element at index 2] |
|
||||
| test.py:605:5:605:19 | IterableSequence [Tuple element at index 0, Tuple element at index 0] | semmle.label | IterableSequence [Tuple element at index 0, Tuple element at index 0] |
|
||||
| test.py:605:5:605:19 | IterableSequence [Tuple element at index 0, Tuple element at index 2] | semmle.label | IterableSequence [Tuple element at index 0, Tuple element at index 2] |
|
||||
| test.py:605:7:605:8 | SSA variable a1 | semmle.label | SSA variable a1 |
|
||||
| test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 0] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 0] |
|
||||
| test.py:605:7:605:13 | ControlFlowNode for Tuple [Tuple element at index 2] | semmle.label | ControlFlowNode for Tuple [Tuple element at index 2] |
|
||||
| test.py:605:7:605:13 | IterableSequence [Tuple element at index 0] | semmle.label | IterableSequence [Tuple element at index 0] |
|
||||
| test.py:605:7:605:13 | IterableSequence [Tuple element at index 2] | semmle.label | IterableSequence [Tuple element at index 2] |
|
||||
| test.py:605:11:605:13 | IterableElement | semmle.label | IterableElement |
|
||||
| test.py:605:11:605:13 | SSA variable a2 [List element] | semmle.label | SSA variable a2 [List element] |
|
||||
| test.py:606:10:606:11 | ControlFlowNode for a1 | semmle.label | ControlFlowNode for a1 |
|
||||
| test.py:608:12:608:13 | ControlFlowNode for a2 [List element] | semmle.label | ControlFlowNode for a2 [List element] |
|
||||
| test.py:608:12:608:16 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
|
||||
| test.py:609:10:609:11 | ControlFlowNode for a2 [List element] | semmle.label | ControlFlowNode for a2 [List element] |
|
||||
| test.py:609:10:609:14 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript |
|
||||
| test.py:614:6:614:14 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] |
|
||||
| test.py:614:6:614:14 | ControlFlowNode for List [Tuple element at index 0] | semmle.label | ControlFlowNode for List [Tuple element at index 0] |
|
||||
| test.py:614:6:614:14 | IterableElement | semmle.label | IterableElement |
|
||||
@@ -859,8 +911,20 @@ nodes
|
||||
| test.py:591:10:591:14 | ControlFlowNode for Subscript | test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:591:10:591:14 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:597:10:597:11 | ControlFlowNode for a1 | test.py:20:10:20:17 | ControlFlowNode for Str | test.py:597:10:597:11 | ControlFlowNode for a1 | Flow found |
|
||||
| test.py:597:10:597:11 | ControlFlowNode for a1 | test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:597:10:597:11 | ControlFlowNode for a1 | Flow found |
|
||||
| test.py:599:12:599:16 | ControlFlowNode for Subscript | test.py:20:10:20:17 | ControlFlowNode for Str | test.py:599:12:599:16 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:599:12:599:16 | ControlFlowNode for Subscript | test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:599:12:599:16 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:599:12:599:16 | ControlFlowNode for Subscript | test.py:584:31:584:36 | ControlFlowNode for SOURCE | test.py:599:12:599:16 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:600:10:600:14 | ControlFlowNode for Subscript | test.py:20:10:20:17 | ControlFlowNode for Str | test.py:600:10:600:14 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:600:10:600:14 | ControlFlowNode for Subscript | test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:600:10:600:14 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:600:10:600:14 | ControlFlowNode for Subscript | test.py:584:31:584:36 | ControlFlowNode for SOURCE | test.py:600:10:600:14 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:606:10:606:11 | ControlFlowNode for a1 | test.py:20:10:20:17 | ControlFlowNode for Str | test.py:606:10:606:11 | ControlFlowNode for a1 | Flow found |
|
||||
| test.py:606:10:606:11 | ControlFlowNode for a1 | test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:606:10:606:11 | ControlFlowNode for a1 | Flow found |
|
||||
| test.py:608:12:608:16 | ControlFlowNode for Subscript | test.py:20:10:20:17 | ControlFlowNode for Str | test.py:608:12:608:16 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:608:12:608:16 | ControlFlowNode for Subscript | test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:608:12:608:16 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:608:12:608:16 | ControlFlowNode for Subscript | test.py:584:31:584:36 | ControlFlowNode for SOURCE | test.py:608:12:608:16 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:609:10:609:14 | ControlFlowNode for Subscript | test.py:20:10:20:17 | ControlFlowNode for Str | test.py:609:10:609:14 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:609:10:609:14 | ControlFlowNode for Subscript | test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:609:10:609:14 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:609:10:609:14 | ControlFlowNode for Subscript | test.py:584:31:584:36 | ControlFlowNode for SOURCE | test.py:609:10:609:14 | ControlFlowNode for Subscript | Flow found |
|
||||
| test.py:615:10:615:11 | ControlFlowNode for a1 | test.py:20:10:20:17 | ControlFlowNode for Str | test.py:615:10:615:11 | ControlFlowNode for a1 | Flow found |
|
||||
| test.py:615:10:615:11 | ControlFlowNode for a1 | test.py:584:12:584:17 | ControlFlowNode for SOURCE | test.py:615:10:615:11 | ControlFlowNode for a1 | Flow found |
|
||||
| test.py:617:12:617:16 | ControlFlowNode for Subscript | test.py:20:10:20:17 | ControlFlowNode for Str | test.py:617:12:617:16 | ControlFlowNode for Subscript | Flow found |
|
||||
|
||||
@@ -596,8 +596,8 @@ def test_iterated_unpacking_assignment_conversion():
|
||||
((a1, *a2), *b) = tt
|
||||
SINK(a1)
|
||||
SINK_F(a2) # The list itself is not tainted
|
||||
SINK_F(a2[0])
|
||||
SINK(a2[1]) # Flow not found since `*a2` does not know to read from index 2
|
||||
SINK_F(a2[0]) # FP here due to list abstraction
|
||||
SINK(a2[1])
|
||||
SINK_F(b) # The list itself is not tainted
|
||||
SINK_F(b[0])
|
||||
|
||||
@@ -605,8 +605,8 @@ def test_iterated_unpacking_assignment_conversion():
|
||||
[(a1, *a2), *b] = tt
|
||||
SINK(a1)
|
||||
SINK_F(a2) # The list itself is not tainted
|
||||
SINK_F(a2[0])
|
||||
SINK(a2[1]) # Flow not found since `*a2` does not know to read from index 2
|
||||
SINK_F(a2[0]) # FP here due to list abstraction
|
||||
SINK(a2[1])
|
||||
SINK_F(b) # The list itself is not tainted
|
||||
SINK_F(b[0]) # Expected FP here due to list abstraction
|
||||
|
||||
|
||||
Reference in New Issue
Block a user