From: Eli Bendersky Date: Thu, 28 Nov 2013 14:31:58 +0000 (-0800) Subject: Issue #19815: Fix segfault when parsing empty namespace declaration. X-Git-Tag: v3.4.0b2~444^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5dd40e555b625c592b8391df84b36215204db4df;p=thirdparty%2FPython%2Fcpython.git Issue #19815: Fix segfault when parsing empty namespace declaration. Based on patches by Christian Heimes and Vajrasky Kok --- diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index 54965345c7b0..7bd8a2c7eea4 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -535,6 +535,11 @@ class ElementTreeTest(unittest.TestCase): ('end-ns', None), ]) + events = ('start-ns', 'end-ns') + context = iterparse(io.StringIO(r""), events) + res = [action for action, elem in context] + self.assertEqual(res, ['start-ns', 'end-ns']) + events = ("start", "end", "bogus") with self.assertRaises(ValueError) as cm: with open(SIMPLE_XMLFILE, "rb") as f: diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 9bdc4c751c3c..7e01352fa766 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -2997,7 +2997,10 @@ expat_start_ns_handler(XMLParserObject* self, const XML_Char* prefix, PyObject* sprefix = NULL; PyObject* suri = NULL; - suri = PyUnicode_DecodeUTF8(uri, strlen(uri), "strict"); + if (uri) + suri = PyUnicode_DecodeUTF8(uri, strlen(uri), "strict"); + else + suri = PyUnicode_FromString(""); if (!suri) return;