Commit 26fb2a8a117 for php.net
commit 26fb2a8a117dee1011b7ea075f3fd269871372c8
Merge: c0f01b34607 dd576944029
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date: Fri Jul 3 13:58:42 2026 -0400
Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
Fix GH-22570: stack overflow serializing a deeply nested Dom\XMLDocument
diff --cc ext/dom/inner_outer_html_mixin.c
index e337d5fd3b0,e81ca5a7b23..2e080859d69
--- a/ext/dom/inner_outer_html_mixin.c
+++ b/ext/dom/inner_outer_html_mixin.c
@@@ -100,22 -103,14 +100,24 @@@ static zend_string *dom_element_html_fr
}
if (UNEXPECTED(status < 0)) {
smart_str_free_ex(&str, false);
- php_dom_throw_error_with_message(SYNTAX_ERR, "The resulting XML serialization is not well-formed", true);
+ if (!EG(exception)) {
+ php_dom_throw_error_with_message(SYNTAX_ERR, "The resulting XML serialization is not well-formed", true);
+ }
- return FAILURE;
+ return NULL;
}
- ZVAL_STR(retval, smart_str_extract(&str));
+ return smart_str_extract(&str);
}
+}
+/* https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin */
+zend_result dom_element_inner_html_read(dom_object *obj, zval *retval)
+{
+ DOM_PROP_NODE(xmlNodePtr, node, obj);
+ zend_string *serialization = dom_element_html_fragment_serialize(obj, node);
+ if (serialization == NULL) {
+ return FAILURE;
+ }
+ ZVAL_STR(retval, serialization);
return SUCCESS;
}