From: Rob Richards Date: Tue, 31 Jul 2007 15:40:49 +0000 (+0000) Subject: MFH: fix bug #41833 (addChild() on a non-existent node, no node created, getName... X-Git-Tag: php-5.2.4RC1~25 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e0a2d149f5304b39c6499ddb5d4547284bd68138;p=php MFH: fix bug #41833 (addChild() on a non-existent node, no node created, getName() segfaults) --- diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 47260f965f..c97bfafc72 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -1563,6 +1563,11 @@ SXE_METHOD(addChild) node = php_sxe_get_first_node(sxe, node TSRMLS_CC); + if (node == NULL) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot add child. Parent is not a permanent member of the XML tree"); + return; + } + localname = xmlSplitQName2((xmlChar *)qname, &prefix); if (localname == NULL) { localname = xmlStrdup((xmlChar *)qname); @@ -1575,9 +1580,7 @@ SXE_METHOD(addChild) newnode->ns = NULL; nsptr = xmlNewNs(newnode, (xmlChar *)nsuri, prefix); } else { - if (node) { - nsptr = xmlSearchNsByHref(node->doc, node, (xmlChar *)nsuri); - } + nsptr = xmlSearchNsByHref(node->doc, node, (xmlChar *)nsuri); if (nsptr == NULL) { nsptr = xmlNewNs(newnode, (xmlChar *)nsuri, prefix); }