]> granicus.if.org Git - python/commitdiff
Issue #19815: Fix segfault when parsing empty namespace declaration.
authorEli Bendersky <eliben@gmail.com>
Thu, 28 Nov 2013 14:25:45 +0000 (06:25 -0800)
committerEli Bendersky <eliben@gmail.com>
Thu, 28 Nov 2013 14:25:45 +0000 (06:25 -0800)
Based on patches by Christian Heimes and Vajrasky Kok

Lib/test/test_xml_etree.py
Modules/_elementtree.c

index adb785247d5734b728355b115904135682684fd6..9fb6c998a9a81751af5591b6c1c4e82742fc4f7f 100644 (file)
@@ -713,14 +713,21 @@ def iterparse():
     end {namespace}root
     end-ns None
 
+    >>> import StringIO
+
+    >>> events = ('start-ns', 'end-ns')
+    >>> context = ET.iterparse(StringIO.StringIO(r"<root xmlns=''/>"), events)
+    >>> for action, elem in context:
+    ...   print action, elem
+    start-ns ('', '')
+    end-ns None
+
     >>> events = ("start", "end", "bogus")
     >>> with open(SIMPLE_XMLFILE, "rb") as f:
     ...     iterparse(f, events)
     Traceback (most recent call last):
     ValueError: unknown event 'bogus'
 
-    >>> import StringIO
-
     >>> source = StringIO.StringIO(
     ...     "<?xml version='1.0' encoding='iso-8859-1'?>\\n"
     ...     "<body xmlns='http://&#233;ffbot.org/ns'\\n"
index b9abcac8d0c8706cd4f9652d6329ec8f4feb7e1e..2a7c8287ef77e0e1aa6bb98c512bd928990534b7 100644 (file)
@@ -2338,7 +2338,10 @@ expat_start_ns_handler(XMLParserObject* self, const XML_Char* prefix,
     PyObject* sprefix = NULL;
     PyObject* suri = NULL;
 
-    suri = makestring(uri, strlen(uri));
+    if (uri)
+      suri = makestring(uri, strlen(uri));
+    else
+      suri = PyString_FromStringAndSize("", 0);
     if (!suri)
         return;