mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Python: Add tests for nested assignment
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
WARNING: Type CallContext has been deprecated and may be removed in future (Contexts.ql:6,6-17)
|
||||
WARNING: Type CallContext has been deprecated and may be removed in future (Contexts.ql:7,14-25)
|
||||
| assignment.py:1 | p0 = simple.test | Function test |
|
||||
| assignment.py:1 | p1 = simple.test | Function test |
|
||||
| assignment.py:1 | p2 = simple.test | Function test |
|
||||
| carrier.py:4 | p1 = explicit.carrier | Function __init__ |
|
||||
| carrier.py:4 | p1 = simple.test | Function __init__ |
|
||||
| carrier.py:10 | p0.attr = simple.test | Function get_attr |
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
| assignment.py:5 | SOURCE | assignment.py:5 | Taint simple.test | a |
|
||||
| assignment.py:7 | a | assignment.py:7 | Taint simple.test | b |
|
||||
| assignment.py:13 | SOURCE | assignment.py:13 | Taint simple.test | t2 |
|
||||
| carrier.py:4 | ParameterDefinition | carrier.py:4 | Taint explicit.carrier | arg |
|
||||
| carrier.py:4 | ParameterDefinition | carrier.py:4 | Taint simple.test | arg |
|
||||
| carrier.py:10 | ParameterDefinition | carrier.py:10 | Taint .attr = simple.test | self |
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
| assignment.py:5 | SOURCE | simple.test |
|
||||
| assignment.py:13 | SOURCE | simple.test |
|
||||
| carrier.py:17 | SOURCE | simple.test |
|
||||
| carrier.py:21 | TAINT_CARRIER_SOURCE | explicit.carrier |
|
||||
| carrier.py:25 | SOURCE | simple.test |
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
| scissors | rockpaperscissors.py:29 | SCISSORS | | --> | scissors | rockpaperscissors.py:31 | x | |
|
||||
| scissors | rockpaperscissors.py:30 | x | | --> | paper | rockpaperscissors.py:30 | Attribute() | |
|
||||
| scissors | rockpaperscissors.py:31 | x | | --> | scissors | rockpaperscissors.py:6 | arg | p0 = scissors |
|
||||
| sequence of simple.test | assignment.py:13 | Tuple | | --> | sequence of [simple.test] | assignment.py:13 | Tuple | |
|
||||
| sequence of simple.test | test.py:168 | List | | --> | sequence of simple.test | test.py:170 | l | |
|
||||
| sequence of simple.test | test.py:168 | List | | --> | sequence of simple.test | test.py:174 | l | |
|
||||
| sequence of simple.test | test.py:170 | SSA variable x | | --> | sequence of simple.test | test.py:172 | x | |
|
||||
@@ -112,6 +113,13 @@
|
||||
| sequence of simple.test | test.py:208 | List | | --> | sequence of simple.test | test.py:209 | seq | |
|
||||
| sequence of simple.test | test.py:209 | seq | | --> | simple.test | test.py:209 | For | |
|
||||
| sequence of simple.test | test.py:213 | flow_in_generator() | | --> | simple.test | test.py:213 | For | |
|
||||
| simple.test | assignment.py:5 | SOURCE | | --> | sequence of simple.test | assignment.py:5 | Tuple | |
|
||||
| simple.test | assignment.py:5 | SOURCE | | --> | simple.test | assignment.py:6 | a | |
|
||||
| simple.test | assignment.py:5 | SOURCE | | --> | simple.test | assignment.py:7 | a | |
|
||||
| simple.test | assignment.py:7 | a | | --> | sequence of simple.test | assignment.py:7 | Tuple | |
|
||||
| simple.test | assignment.py:7 | a | | --> | simple.test | assignment.py:8 | b | |
|
||||
| simple.test | assignment.py:13 | SOURCE | | --> | sequence of simple.test | assignment.py:13 | Tuple | |
|
||||
| simple.test | assignment.py:13 | SOURCE | | --> | simple.test | assignment.py:14 | t2 | |
|
||||
| simple.test | carrier.py:4 | arg | p1 = simple.test | --> | simple.test | carrier.py:5 | arg | p1 = simple.test |
|
||||
| simple.test | carrier.py:17 | SOURCE | | --> | .attr = simple.test | carrier.py:17 | ImplicitCarrier() | |
|
||||
| simple.test | carrier.py:17 | SOURCE | | --> | simple.test | carrier.py:4 | arg | p1 = simple.test |
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
| assignment.py:6 | swap_taint | a | simple.test |
|
||||
| assignment.py:6 | swap_taint | b | NO TAINT |
|
||||
| assignment.py:8 | swap_taint | a | NO TAINT |
|
||||
| assignment.py:8 | swap_taint | b | simple.test |
|
||||
| assignment.py:14 | nested_assignment | s1 | NO TAINT |
|
||||
| assignment.py:14 | nested_assignment | s2 | NO TAINT |
|
||||
| assignment.py:14 | nested_assignment | t1 | NO TAINT |
|
||||
| assignment.py:14 | nested_assignment | t2 | simple.test |
|
||||
18
python/ql/test/library-tests/taint/general/TestTaint.ql
Normal file
18
python/ql/test/library-tests/taint/general/TestTaint.ql
Normal file
@@ -0,0 +1,18 @@
|
||||
import python
|
||||
import semmle.python.security.TaintTracking
|
||||
import TaintLib
|
||||
|
||||
from Call call, Expr arg, string taint_string
|
||||
where
|
||||
call.getLocation().getFile().getShortName() = "assignment.py" and
|
||||
call.getFunc().(Name).getId() = "test" and
|
||||
arg = call.getAnArg() and
|
||||
(
|
||||
not exists(TaintedNode tainted | tainted.getAstNode() = arg) and
|
||||
taint_string = "NO TAINT"
|
||||
or
|
||||
exists(TaintedNode tainted | tainted.getAstNode() = arg |
|
||||
taint_string = tainted.getTaintKind().toString()
|
||||
)
|
||||
)
|
||||
select arg.getLocation().toString(), call.getScope().(Function).getName(), arg.toString(), taint_string
|
||||
@@ -1,3 +1,7 @@
|
||||
| assignment.py:5 | a_0 | assignment.py:5 | Taint simple.test |
|
||||
| assignment.py:6 | a_1 | assignment.py:6 | Taint simple.test |
|
||||
| assignment.py:7 | b_1 | assignment.py:7 | Taint simple.test |
|
||||
| assignment.py:13 | t2_0 | assignment.py:13 | Taint simple.test |
|
||||
| carrier.py:4 | arg_0 | carrier.py:4 | Taint explicit.carrier |
|
||||
| carrier.py:4 | arg_0 | carrier.py:4 | Taint simple.test |
|
||||
| carrier.py:5 | self_1 | carrier.py:5 | Taint .attr = explicit.carrier |
|
||||
|
||||
14
python/ql/test/library-tests/taint/general/assignment.py
Normal file
14
python/ql/test/library-tests/taint/general/assignment.py
Normal file
@@ -0,0 +1,14 @@
|
||||
def test(*args):
|
||||
pass
|
||||
|
||||
def swap_taint():
|
||||
a, b = SOURCE, "safe"
|
||||
test(a, b)
|
||||
a, b = b, a
|
||||
test(a, b)
|
||||
|
||||
def nested_assignment():
|
||||
# A contrived example, that is a bit silly (and is not even iterable unpacking).
|
||||
# We do handle this case though.
|
||||
((t1, s1), t2, s2) = ((SOURCE, "safe"), SOURCE, "safe")
|
||||
test(t1, s1, t2, s2)
|
||||
Reference in New Issue
Block a user