Skip to content

Commit 30d7f0d

Browse files
authored
Merge pull request github#5687 from RasmusWL/inline-taint-tests
Approved by yoff
2 parents a19373a + 63a2657 commit 30d7f0d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+728
-1131
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
argumentToEnsureNotTaintedNotMarkedAsSpurious
2+
untaintedArgumentToEnsureTaintedNotMarkedAsMissing
3+
failures

python/ql/test/experimental/dataflow/tainttracking/commonSanitizer/TestTaint.ql renamed to python/ql/test/experimental/dataflow/tainttracking/commonSanitizer/InlineTaintTest.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import experimental.dataflow.tainttracking.TestTaintLib
1+
import experimental.meta.InlineTaintTest
22
import semmle.python.dataflow.new.BarrierGuards
33

44
class CustomSanitizerOverrides extends TestTaintTrackingConfiguration {

python/ql/test/experimental/dataflow/tainttracking/commonSanitizer/TestTaint.expected

Lines changed: 0 additions & 27 deletions
This file was deleted.

python/ql/test/experimental/dataflow/tainttracking/commonSanitizer/test_string_const_compare.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,98 +15,98 @@ def test_eq():
1515
if ts == "safe":
1616
ensure_not_tainted(ts)
1717
else:
18-
ensure_tainted(ts)
18+
ensure_tainted(ts) # $ tainted
1919
# ts should still be tainted after exiting the if block
20-
ensure_tainted(ts)
20+
ensure_tainted(ts) # $ tainted
2121

2222

2323
def test_eq_unsafe(x="foo"):
2424
"""This test-case might seem strange, but it was a FP in our old points-to based analysis."""
2525
ts = TAINTED_STRING
2626
if ts == ts:
27-
ensure_tainted(ts)
27+
ensure_tainted(ts) # $ tainted
2828
if ts == x:
29-
ensure_tainted(ts)
29+
ensure_tainted(ts) # $ tainted
3030

3131

3232
def test_eq_with_or():
3333
ts = TAINTED_STRING
3434
if ts == "safe" or ts == "also_safe":
35-
ensure_not_tainted(ts)
35+
ensure_not_tainted(ts) # $ SPURIOUS: tainted
3636
else:
37-
ensure_tainted(ts)
37+
ensure_tainted(ts) # $ tainted
3838

3939

4040
def test_non_eq1():
4141
ts = TAINTED_STRING
4242
if ts != "safe":
43-
ensure_tainted(ts)
43+
ensure_tainted(ts) # $ tainted
4444
else:
4545
ensure_not_tainted(ts)
4646

4747

4848
def test_non_eq2():
4949
ts = TAINTED_STRING
5050
if not ts == "safe":
51-
ensure_tainted(ts)
51+
ensure_tainted(ts) # $ tainted
5252
else:
53-
ensure_not_tainted(ts)
53+
ensure_not_tainted(ts) # $ SPURIOUS: tainted
5454

5555

5656
def test_in_list():
5757
ts = TAINTED_STRING
5858
if ts in ["safe", "also_safe"]:
5959
ensure_not_tainted(ts)
6060
else:
61-
ensure_tainted(ts)
61+
ensure_tainted(ts) # $ tainted
6262

6363

6464
def test_in_tuple():
6565
ts = TAINTED_STRING
6666
if ts in ("safe", "also_safe"):
6767
ensure_not_tainted(ts)
6868
else:
69-
ensure_tainted(ts)
69+
ensure_tainted(ts) # $ tainted
7070

7171

7272
def test_in_set():
7373
ts = TAINTED_STRING
7474
if ts in {"safe", "also_safe"}:
7575
ensure_not_tainted(ts)
7676
else:
77-
ensure_tainted(ts)
77+
ensure_tainted(ts) # $ tainted
7878

7979

8080
def test_in_unsafe1(xs):
8181
ts = TAINTED_STRING
8282
if ts in xs:
83-
ensure_tainted(ts)
83+
ensure_tainted(ts) # $ tainted
8484
else:
85-
ensure_tainted(ts)
85+
ensure_tainted(ts) # $ tainted
8686

8787

8888
def test_in_unsafe2(x):
8989
ts = TAINTED_STRING
9090
if ts in ["safe", x]:
91-
ensure_tainted(ts)
91+
ensure_tainted(ts) # $ tainted
9292
else:
93-
ensure_tainted(ts)
93+
ensure_tainted(ts) # $ tainted
9494

9595

9696
def test_not_in1():
9797
ts = TAINTED_STRING
9898
if ts not in ["safe", "also_safe"]:
99-
ensure_tainted(ts)
99+
ensure_tainted(ts) # $ tainted
100100
else:
101101
ensure_not_tainted(ts)
102102

103103

104104
def test_not_in2():
105105
ts = TAINTED_STRING
106106
if not ts in ["safe", "also_safe"]:
107-
ensure_tainted(ts)
107+
ensure_tainted(ts) # $ tainted
108108
else:
109-
ensure_not_tainted(ts)
109+
ensure_not_tainted(ts) # $ SPURIOUS: tainted
110110

111111

112112
def is_safe(x):
@@ -116,9 +116,9 @@ def is_safe(x):
116116
def test_eq_thorugh_func():
117117
ts = TAINTED_STRING
118118
if is_safe(ts):
119-
ensure_not_tainted(ts)
119+
ensure_not_tainted(ts) # $ SPURIOUS: tainted
120120
else:
121-
ensure_tainted(ts)
121+
ensure_tainted(ts) # $ tainted
122122

123123

124124
# Make tests runable
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
argumentToEnsureNotTaintedNotMarkedAsSpurious
2+
untaintedArgumentToEnsureTaintedNotMarkedAsMissing
3+
failures
4+
isSanitizer
5+
| TestTaintTrackingConfiguration | test.py:21:39:21:39 | ControlFlowNode for s |
6+
| TestTaintTrackingConfiguration | test.py:50:10:50:29 | ControlFlowNode for emulated_escaping() |
7+
isSanitizerGuard
8+
| TestTaintTrackingConfiguration | test.py:35:8:35:26 | ControlFlowNode for emulated_is_safe() |
9+
| TestTaintTrackingConfiguration | test_logical.py:29:8:29:17 | ControlFlowNode for is_safe() |
10+
| TestTaintTrackingConfiguration | test_logical.py:44:8:44:17 | ControlFlowNode for is_safe() |
11+
| TestTaintTrackingConfiguration | test_logical.py:52:12:52:21 | ControlFlowNode for is_safe() |
12+
| TestTaintTrackingConfiguration | test_logical.py:72:8:72:17 | ControlFlowNode for is_safe() |
13+
| TestTaintTrackingConfiguration | test_logical.py:80:12:80:21 | ControlFlowNode for is_safe() |
14+
| TestTaintTrackingConfiguration | test_logical.py:104:8:104:17 | ControlFlowNode for is_safe() |
15+
| TestTaintTrackingConfiguration | test_logical.py:127:12:127:21 | ControlFlowNode for is_safe() |
16+
| TestTaintTrackingConfiguration | test_logical.py:132:16:132:25 | ControlFlowNode for is_safe() |
17+
| TestTaintTrackingConfiguration | test_logical.py:137:20:137:29 | ControlFlowNode for is_safe() |
18+
| TestTaintTrackingConfiguration | test_reference.py:30:8:30:17 | ControlFlowNode for is_safe() |
19+
| TestTaintTrackingConfiguration | test_reference.py:40:8:40:25 | ControlFlowNode for is_safe() |
20+
| TestTaintTrackingConfiguration | test_reference.py:55:8:55:21 | ControlFlowNode for is_safe() |

python/ql/test/experimental/dataflow/tainttracking/customSanitizer/TestTaint.ql renamed to python/ql/test/experimental/dataflow/tainttracking/customSanitizer/InlineTaintTest.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import experimental.dataflow.tainttracking.TestTaintLib
1+
import experimental.meta.InlineTaintTest
22

33
class IsSafeCheck extends DataFlow::BarrierGuard {
44
IsSafeCheck() {

python/ql/test/experimental/dataflow/tainttracking/customSanitizer/TestTaint.expected

Lines changed: 0 additions & 61 deletions
This file was deleted.

python/ql/test/experimental/dataflow/tainttracking/customSanitizer/test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ def test_custom_sanitizer_guard():
3535
if emulated_is_safe(s):
3636
ensure_not_tainted(s)
3737
s = TAINTED_STRING
38-
ensure_tainted(s)
38+
ensure_tainted(s) # $ tainted
3939
else:
40-
ensure_tainted(s)
40+
ensure_tainted(s) # $ tainted
4141

4242

4343
def emulated_escaping(arg):

0 commit comments

Comments
 (0)