Skip to content

Commit d2ed92d

Browse files
Added tests
1 parent d2b0d7a commit d2ed92d

File tree

3 files changed

+105
-0
lines changed

3 files changed

+105
-0
lines changed

python/ql/test/library-tests/frameworks/lxml/InlineTaintTest.expected

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import experimental.meta.InlineTaintTest
2+
import MakeInlineTaintTest<TestTaintTrackingConfig>
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import lxml.etree as ET
2+
3+
def ensure_tainted(*args):
4+
pass
5+
6+
TAINTED_STRING = "<a><b></b></a>"
7+
src = TAINTED_STRING
8+
9+
def test():
10+
ensure_tainted(
11+
src, # $ tainted
12+
ET.fromstring(src), # $ tainted
13+
ET.XML(src), # $ tainted
14+
ET.HTML(src), # $ tainted
15+
ET.fromstringlist([src]), # $ tainted
16+
ET.XMLID(src), # $ tainted
17+
ET.XMLDTD(src), # $ tainted
18+
)
19+
20+
21+
parser = ET.XmlParser()
22+
parser.feed(src)
23+
ensure_tainted(parser.close()), # $ tainted
24+
25+
parser2 = ET.get_default_parser()
26+
parser.feed(data=src)
27+
ensure_tainted(parser2.close()), # $ tainted
28+
29+
elem = ET.XML(src)
30+
ensure_tainted(
31+
elem, # $ tainted
32+
ET.tostring(elem), # $ tainted
33+
ET.tostringlist(elem), # $ tainted
34+
elem.attrib, # $ tainted
35+
elem.base, # $ tainted
36+
elem.nsmap, # $ tainted
37+
elem.prefix, # $ tainted
38+
elem.tag, # $ tainted
39+
elem.tail, # $ tainted
40+
elem.text, # $ tainted
41+
elem[0], # $ tainted
42+
elem[0].text, # $ tainted
43+
elem.cssselect("b"), # $ tainted
44+
elem.cssselect("b")[0].text, # $ tainted
45+
elem.find("b").text, # $ tainted
46+
elem.findall("b"), # $ tainted
47+
list(elem.findall("b"))[0].text, # $ tainted
48+
elem.get("at"), # $ tainted
49+
elem.getchildren(), # $ tainted
50+
list(elem.getchildren())[0].text, # $ tainted,
51+
elem.getiterator(), # $ tainted
52+
list(elem.getiterator())[0].text, # $ tainted
53+
elem.getnext().text, # $ tainted
54+
elem.getparent().text, # $ tainted
55+
elem.getprevious().text, # $ tainted
56+
elem.getroottree(), # $ tainted
57+
elem.getroottree().getroot().text, # $ tainted
58+
elem.items(), # $ tainted
59+
list(elem.items())[0].text, # $ tainted
60+
elem.iter(), # $ tainted
61+
list(elem.iter())[0].text, # $ tainted
62+
elem.iterancestors(), # $ tainted
63+
list(elem.iterancestors())[0].text, # $ tainted
64+
elem.iterchildren(), # $ tainted
65+
list(elem.iterchildren())[0].text, # $ tainted
66+
elem.iterdecendants(), # $ tainted
67+
list(elem.iterdecendants())[0].text, # $ tainted
68+
elem.iterfind(), # $ tainted
69+
list(elem.iterfind())[0].text, # $ tainted
70+
elem.itersiblings(), # $ tainted
71+
list(elem.itersiblings())[0].text, # $ tainted
72+
elem.itertext(), # $ tainted
73+
list(elem.itertext())[0].text, # $ tainted
74+
elem.keys(), # $ tainted
75+
elem.values(), # $ tainted
76+
elem.xpath("b"), # $ tainted
77+
list(elem.xpath("b"))[0].text, # $ tainted
78+
)
79+
80+
for ch in elem:
81+
ensure_tainted(
82+
ch, # $ tainted
83+
ch.text # $ tainted
84+
)
85+
86+
tree = ET.parse(src)
87+
ensure_tainted(
88+
tree, # $ tainted
89+
tree.getroot().text, # $ tainted
90+
tree.find("a").text, # $ tainted
91+
tree.findall("a"), # $ tainted
92+
list(tree.findall("a"))[0].text, # $ tainted
93+
tree.getiterator(), # $ tainted
94+
list(tree.getiterator())[0].text, # $ tainted
95+
tree.iter(), # $ tainted
96+
list(tree.iter())[0].text, # $ tainted
97+
tree.iterfind(), # $ tainted
98+
list(tree.iterfind())[0].text, # $ tainted
99+
)
100+
101+
102+
103+
test()

0 commit comments

Comments
 (0)