Skip to content

Commit

Permalink
test_xml_etree.py: Fix for Expat >=2.6.0 with reparse deferral
Browse files Browse the repository at this point in the history
Fix etree XMLPullParser tests for Expat >=2.6.0 with reparse deferral

Combined with gh#python/cpython!31453
bpo-46811: Make test suite support Expat >=2.4.5 (pythonGH-31453)

Curly brackets were never allowed in namespace URIs
according to RFC 3986, and so-called namespace-validating
XML parsers have the right to reject them a invalid URIs.

libexpat >=2.4.5 has become strcter in that regard due to
related security issues; with ET.XML instantiating a
namespace-aware parser under the hood, this test has no
future in CPython.

References:
- https://datatracker.ietf.org/doc/html/rfc3968
- https://www.w3.org/TR/xml-names/

Also, test_minidom.py: Support Expat >=2.4.5
(cherry picked from commit 2cae938)

Co-authored-by: Sebastian Pipping <[email protected]>
Fixes: gh#python#115133
From-PR: gh#python/cpython!115138
Patch: CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch
  • Loading branch information
hartwork authored and mcepl committed May 16, 2024
1 parent 878403d commit 6b33f55
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion Lib/test/test_xml_etree.py
Original file line number Diff line number Diff line change
Expand Up @@ -1046,7 +1046,11 @@ def assert_event_tags(self, parser, expected):
expected)

def test_simple_xml(self):
for chunk_size in (None, 1, 5):
# if is_expat_2_6_0:
chunks = (None,)
# else:
# chunks = (None, 1, 5)
for chunk_size in chunks:
with self.subTest(chunk_size=chunk_size):
expected_events = []
parser = ET.XMLPullParser()
Expand Down

0 comments on commit 6b33f55

Please sign in to comment.