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 4545parser = lxml .etree .XMLParser (huge_tree = True )
4646lxml .etree .fromstring (x , parser = parser ) # $ input=x vuln='Billion Laughs' vuln='Quadratic Blowup' vuln='XXE'
4747
48- # Billion laughs, but not XXE
48+ # Safe for both Billion laughs and XXE
4949parser = 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'
5151
5252# DTD retrival vuln (also XXE)
5353parser = 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():
318318 @expects_timeout
319319 def test_quadratic_blowup_manually_enabled ():
320320 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
326336
327337 @staticmethod
328338 def test_ok_xml ():
You can’t perform that action at this time.
0 commit comments