summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Eberlei <kontakt@beberlei.de>2020-03-06 00:03:13 +0100
committerBenjamin Eberlei <kontakt@beberlei.de>2020-03-06 00:03:13 +0100
commit0d913f9acf821f4d3074ac457b93d7c478edbcc5 (patch)
treee80983a18dbeaf0067b76351968616b33b2bf37e
parentb8100a150afa80aa2b1eda43e798035d4dcc917a (diff)
downloadphp-git-0d913f9acf821f4d3074ac457b93d7c478edbcc5.tar.gz
Fix another memory leak in dom_zvals_to_fragment.
-rw-r--r--ext/dom/parentnode.c7
-rw-r--r--ext/dom/tests/DOM4_ParentNode_append_with_attributes.phpt6
2 files changed, 12 insertions, 1 deletions
diff --git a/ext/dom/parentnode.c b/ext/dom/parentnode.c
index be30c79261..a9502a5159 100644
--- a/ext/dom/parentnode.c
+++ b/ext/dom/parentnode.c
@@ -179,6 +179,13 @@ xmlNode* dom_zvals_to_fragment(php_libxml_ref_obj *document, xmlNode *contextNod
newNodeObj->document = document;
xmlSetTreeDoc(newNode, documentNode);
+ if (newNode->type == XML_ATTRIBUTE_NODE) {
+ xmlFree(fragment);
+
+ php_dom_throw_error(HIERARCHY_REQUEST_ERR, stricterror);
+ return NULL;
+ }
+
if (!xmlAddChild(fragment, newNode)) {
xmlFree(fragment);
diff --git a/ext/dom/tests/DOM4_ParentNode_append_with_attributes.phpt b/ext/dom/tests/DOM4_ParentNode_append_with_attributes.phpt
index 3fb266729a..f2c6aa9a6d 100644
--- a/ext/dom/tests/DOM4_ParentNode_append_with_attributes.phpt
+++ b/ext/dom/tests/DOM4_ParentNode_append_with_attributes.phpt
@@ -19,8 +19,12 @@ $element = $dom->documentElement;
try {
$element->append($replacement, $addition);
} catch (DOMException $e) {
- echo $e->getMessage();
+ echo $e->getMessage() . "\n";
}
+
+echo $dom->saveXML();
?>
--EXPECT--
Hierarchy Request Error
+<?xml version="1.0"?>
+<test attr-one="21"/>