File tree Expand file tree Collapse file tree 2 files changed +57
-0
lines changed
python/ql/test/library-tests/frameworks/django-v2-v3 Expand file tree Collapse file tree 2 files changed +57
-0
lines changed Original file line number Diff line number Diff line change 1
1
| response_test.py:61 | ok | get_redirect_url | foo |
2
+ | taint_forms.py:6 | fail | to_python | value |
3
+ | taint_forms.py:9 | fail | validate | value |
4
+ | taint_forms.py:12 | fail | run_validators | value |
5
+ | taint_forms.py:15 | fail | clean | value |
6
+ | taint_forms.py:33 | fail | clean | cleaned_data |
7
+ | taint_forms.py:34 | fail | clean | cleaned_data["key"] |
8
+ | taint_forms.py:35 | fail | clean | cleaned_data.get(..) |
9
+ | taint_forms.py:39 | fail | clean | self.cleaned_data |
10
+ | taint_forms.py:40 | fail | clean | self.cleaned_data["key"] |
11
+ | taint_forms.py:41 | fail | clean | self.cleaned_data.get(..) |
12
+ | taint_forms.py:46 | fail | clean_foo | self.cleaned_data |
2
13
| taint_test.py:8 | ok | test_taint | bar |
3
14
| taint_test.py:8 | ok | test_taint | foo |
4
15
| taint_test.py:9 | ok | test_taint | baz |
Original file line number Diff line number Diff line change
1
+ import django .forms
2
+
3
+
4
+ class MyField (django .forms .Field ):
5
+ def to_python (self , value ):
6
+ ensure_tainted (value )
7
+
8
+ def validate (self , value ):
9
+ ensure_tainted (value )
10
+
11
+ def run_validators (self , value ):
12
+ ensure_tainted (value )
13
+
14
+ def clean (self , value ):
15
+ ensure_tainted (value )
16
+
17
+ # # Base definition of `clean` looks like the following, so there is actually
18
+ # # _data flow_ from the methods, but we will ignore for simplicity.
19
+ # value = self.to_python(value)
20
+ # self.validate(value)
21
+ # self.run_validators(value)
22
+ # return value
23
+
24
+
25
+ class MyForm (django .forms .Form ):
26
+
27
+ foo = MyField ()
28
+
29
+ def clean (self ):
30
+ cleaned_data = super ().clean ()
31
+
32
+ ensure_tainted (
33
+ cleaned_data ,
34
+ cleaned_data ["key" ],
35
+ cleaned_data .get ("key" ),
36
+ )
37
+
38
+ ensure_tainted (
39
+ self .cleaned_data ,
40
+ self .cleaned_data ["key" ],
41
+ self .cleaned_data .get ("key" ),
42
+ )
43
+
44
+ def clean_foo (self ):
45
+ # This method is supposed to clean a the `foo` field in context of this form.
46
+ ensure_tainted (self .cleaned_data )
You can’t perform that action at this time.
0 commit comments