From 5642e58b51a4eb4128417df7c755ca58791a6c58 Mon Sep 17 00:00:00 2001 From: shixuantong <1726671442@qq.com> Date: Mon, 7 Mar 2022 17:43:32 +0800 Subject: [PATCH] Make test suite support upstream Expat >=2.4.5 --- ...-Make-test-suite-support-Expat-2.4.5.patch | 112 ++++++++++++++++++ python3.spec | 10 +- 2 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 backport-bpo-46811-Make-test-suite-support-Expat-2.4.5.patch diff --git a/backport-bpo-46811-Make-test-suite-support-Expat-2.4.5.patch b/backport-bpo-46811-Make-test-suite-support-Expat-2.4.5.patch new file mode 100644 index 0000000..ffa58e8 --- /dev/null +++ b/backport-bpo-46811-Make-test-suite-support-Expat-2.4.5.patch @@ -0,0 +1,112 @@ +From 336a916f75642dfe2d87e237981686051d5d51f8 Mon Sep 17 00:00:00 2001 +From: "Miss Islington (bot)" + <31488909+miss-islington@users.noreply.github.com> +Date: Mon, 21 Feb 2022 08:16:23 -0800 +Subject: [PATCH] bpo-46811: Make test suite support Expat >=2.4.5 (GH-31453) + (GH-31469) + +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 2cae93832f46b245847bdc252456ddf7742ef45e) + +Co-authored-by: Sebastian Pipping + +Co-authored-by: Sebastian Pipping + +Conflict: +upstream patch: ++ if pyexpat.version_info >= (2, 4, 5): +openEuler patch: ++ if pyexpat.version_info >= (2, 2, 9): +--- + Lib/test/test_minidom.py | 17 +++++++++++++++-- + Lib/test/test_xml_etree.py | 6 ------ + .../Library/2022-02-20-21-03-31.bpo-46811.8BxgdQ.rst | 1 + + 3 files changed, 16 insertions(+), 8 deletions(-) + create mode 100644 Misc/NEWS.d/next/Library/2022-02-20-21-03-31.bpo-46811.8BxgdQ.rst + +diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py +index 041a415..ab06f18 100644 +--- a/Lib/test/test_minidom.py ++++ b/Lib/test/test_minidom.py +@@ -5,10 +5,12 @@ import pickle + from test import support + import unittest + ++import pyexpat + import xml.dom.minidom + + from xml.dom.minidom import parse, Node, Document, parseString + from xml.dom.minidom import getDOMImplementation ++from xml.parsers.expat import ExpatError + + + tstfile = support.findfile("test.xml", subdir="xmltestdata") +@@ -1146,7 +1148,13 @@ class MinidomTest(unittest.TestCase): + + # Verify that character decoding errors raise exceptions instead + # of crashing +- self.assertRaises(UnicodeDecodeError, parseString, ++ if pyexpat.version_info >= (2, 2, 9): ++ self.assertRaises(ExpatError, parseString, ++ b'') ++ self.assertRaises(ExpatError, parseString, ++ b'Comment \xe7a va ? Tr\xe8s bien ?') ++ else: ++ self.assertRaises(UnicodeDecodeError, parseString, + b'Comment \xe7a va ? Tr\xe8s bien ?') + + doc.unlink() +@@ -1592,7 +1600,12 @@ class MinidomTest(unittest.TestCase): + self.confirm(doc2.namespaceURI == xml.dom.EMPTY_NAMESPACE) + + def testExceptionOnSpacesInXMLNSValue(self): +- with self.assertRaisesRegex(ValueError, 'Unsupported syntax'): ++ if pyexpat.version_info >= (2, 2, 9): ++ context = self.assertRaisesRegex(ExpatError, 'syntax error') ++ else: ++ context = self.assertRaisesRegex(ValueError, 'Unsupported syntax') ++ ++ with context: + parseString('') + + def testDocRemoveChild(self): +diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py +index 75c9c25..5ba0de8 100644 +--- a/Lib/test/test_xml_etree.py ++++ b/Lib/test/test_xml_etree.py +@@ -1683,12 +1683,6 @@ class BugsTest(unittest.TestCase): + b"\n" + b'tãg') + +- def test_issue3151(self): +- e = ET.XML('') +- self.assertEqual(e.tag, '{${stuff}}localname') +- t = ET.ElementTree(e) +- self.assertEqual(ET.tostring(e), b'') +- + def test_issue6565(self): + elem = ET.XML("") + self.assertEqual(summarize_list(elem), ['tag']) +diff --git a/Misc/NEWS.d/next/Library/2022-02-20-21-03-31.bpo-46811.8BxgdQ.rst b/Misc/NEWS.d/next/Library/2022-02-20-21-03-31.bpo-46811.8BxgdQ.rst +new file mode 100644 +index 0000000..6969bd1 +--- /dev/null ++++ b/Misc/NEWS.d/next/Library/2022-02-20-21-03-31.bpo-46811.8BxgdQ.rst +@@ -0,0 +1 @@ ++Make test suite support Expat >=2.4.5 +-- +1.8.3.1 + diff --git a/python3.spec b/python3.spec index f7beb4c..2cfd851 100644 --- a/python3.spec +++ b/python3.spec @@ -3,7 +3,7 @@ Summary: Interpreter of the Python3 programming language URL: https://www.python.org/ Version: 3.7.9 -Release: 21 +Release: 22 License: Python %global branchversion 3.7 @@ -159,6 +159,7 @@ Patch6049: backport-bpo-42183-Fix-a-stack-overflow-error-for-asyncio-Tas.patch Patch6050: backport-bpo-41815-SQLite-segfault-if-backup-called-on-closed.patch Patch6051: backport-bpo-45001-Make-email-date-parsing-more-robust-agains.patch Patch6052: backport-3.7-bpo-43124-Fix-smtplib-multiple-CRLF-injection-GH.patch +Patch6053: backport-bpo-46811-Make-test-suite-support-Expat-2.4.5.patch patch9000: Don-t-override-PYTHONPATH-which-is-already-set.patch patch9001: add-the-sm3-method-for-obtaining-the-salt-value.patch @@ -306,6 +307,7 @@ rm Lib/ensurepip/_bundled/*.whl %patch6050 -p1 %patch6051 -p1 %patch6052 -p1 +%patch6053 -p1 %patch9000 -p1 %patch9001 -p1 @@ -910,6 +912,12 @@ export BEP_GTDLIST="$BEP_GTDLIST_TMP" %{_mandir}/*/* %changelog +* Mon Mar 07 2022 shixuantong - 3.7.9-22 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:Make test suite support upstream Expat >=2.4.5 + * Sat Feb 19 2022 shixuantong - 3.7.9-21 - Type:bugfix - CVE:NA -- Gitee