File tree Expand file tree Collapse file tree 2 files changed +17
-7
lines changed
python/ql/test/experimental/library-tests/frameworks/XML Expand file tree Collapse file tree 2 files changed +17
-7
lines changed Original file line number Diff line number Diff line change 45
45
parser = lxml .etree .XMLParser (huge_tree = True )
46
46
lxml .etree .fromstring (x , parser = parser ) # $ input=x vuln='Billion Laughs' vuln='Quadratic Blowup' vuln='XXE'
47
47
48
- # Billion laughs, but not XXE
48
+ # Safe for both Billion laughs and XXE
49
49
parser = lxml .etree .XMLParser (resolve_entities = False , huge_tree = True )
50
- lxml .etree .fromstring (x , parser = parser ) # $ input=x vuln='Billion Laughs' vuln='Quadratic Blowup'
50
+ lxml .etree .fromstring (x , parser = parser ) # $ input=x SPURIOUS: vuln='Billion Laughs' vuln='Quadratic Blowup'
51
51
52
52
# DTD retrival vuln (also XXE)
53
53
parser = lxml .etree .XMLParser (load_dtd = True , no_network = False )
Original file line number Diff line number Diff line change @@ -318,11 +318,21 @@ def test_billion_laughs_manually_enabled():
318
318
@expects_timeout
319
319
def test_quadratic_blowup_manually_enabled ():
320
320
parser = lxml .etree .XMLParser (huge_tree = True )
321
- try :
322
- _root = lxml .etree .fromstring (quadratic_blowup , parser = parser )
323
- assert False
324
- except lxml .etree .XMLSyntaxError as e :
325
- assert "Detected an entity reference loop" in str (e )
321
+ root = lxml .etree .fromstring (quadratic_blowup , parser = parser )
322
+
323
+ @staticmethod
324
+ def test_billion_laughs_huge_tree_not_enough ():
325
+ parser = lxml .etree .XMLParser (huge_tree = True , resolve_entities = False )
326
+ root = lxml .etree .fromstring (billion_laughs , parser = parser )
327
+ assert root .tag == "lolz"
328
+ assert root .text == None
329
+
330
+ @staticmethod
331
+ def test_quadratic_blowup_huge_tree_not_enough ():
332
+ parser = lxml .etree .XMLParser (huge_tree = True , resolve_entities = False )
333
+ root = lxml .etree .fromstring (quadratic_blowup , parser = parser )
334
+ assert root .tag == "foo"
335
+ assert root .text == None
326
336
327
337
@staticmethod
328
338
def test_ok_xml ():
You can’t perform that action at this time.
0 commit comments