]> granicus.if.org Git - php/commitdiff
check node type before accessing ns - prevent corruption under compact mode
authorRob Richards <rrichards@php.net>
Mon, 31 Oct 2005 19:51:40 +0000 (19:51 +0000)
committerRob Richards <rrichards@php.net>
Mon, 31 Oct 2005 19:51:40 +0000 (19:51 +0000)
ext/simplexml/simplexml.c

index b6783cc8840ac4efa6e737c5513cdfc8935f084e..88a342fc0e5f4d51ad9cfe6989c2363889770c02 100644 (file)
@@ -1119,7 +1119,9 @@ static void sxe_add_namespaces(php_sxe_object *sxe, xmlNodePtr node, zend_bool r
        if (recursive) {
                node = node->children;
                while (node) {
-                       sxe_add_namespaces(sxe, node, recursive, return_value TSRMLS_CC);
+                       if (node->type == XML_ELEMENT_NODE) {
+                               sxe_add_namespaces(sxe, node, recursive, return_value TSRMLS_CC);
+                       }
                        node = node->next;
                }
        }
@@ -1147,7 +1149,7 @@ SXE_METHOD(getNamespaces)
                SKIP_TEXT(node)
                if (node->type == XML_ELEMENT_NODE) {
                        sxe_add_namespaces(sxe, node, recursive, return_value TSRMLS_CC);
-               } else if (node->ns) {
+               } else if (node->type == XML_ATTRIBUTE_NODE && node->ns) {
                        add_assoc_string(return_value, (char*)node->ns->prefix, (char*)node->ns->href, 1);
                }
 next_iter: