Fix crash when toggleAttribute() is used without a document

This commit is contained in:
Niels Dossche 2023-12-22 21:12:59 +01:00
parent f20edf0fb3
commit b2d778c36e
3 changed files with 19 additions and 1 deletions

1
NEWS
View file

@ -20,6 +20,7 @@ PHP NEWS
- DOM:
. Fixed bug GH-12870 (Creating an xmlns attribute results in a DOMException).
(nielsdos)
. Fix crash when toggleAttribute() is used without a document. (nielsdos)
- FFI:
. Fixed bug GH-9698 (stream_wrapper_register crashes with FFI\CData).

View file

@ -1554,7 +1554,7 @@ PHP_METHOD(DOMElement, toggleAttribute)
}
/* Step 2 */
if (thisp->doc->type == XML_HTML_DOCUMENT_NODE && (thisp->ns == NULL || xmlStrEqual(thisp->ns->href, (const xmlChar *) "http://www.w3.org/1999/xhtml"))) {
if (thisp->doc != NULL && thisp->doc->type == XML_HTML_DOCUMENT_NODE && (thisp->ns == NULL || xmlStrEqual(thisp->ns->href, (const xmlChar *) "http://www.w3.org/1999/xhtml"))) {
qname_tmp = zend_str_tolower_dup_ex(qname, qname_length);
if (qname_tmp != NULL) {
qname = qname_tmp;

View file

@ -0,0 +1,17 @@
--TEST--
DOMElement::toggleAttribute() without a document
--EXTENSIONS--
dom
--FILE--
<?php
$element = new DOMElement("container");
$element->toggleAttribute('foo', true);
$dom = new DOMDocument;
$element = $dom->importNode($element, true);
echo $dom->saveXML($element), "\n";
?>
--EXPECT--
<container foo=""/>