diff --git a/ext/dom/html5_serializer.c b/ext/dom/html5_serializer.c
index 3970fb059c1c..f0048aa4aae8 100644
--- a/ext/dom/html5_serializer.c
+++ b/ext/dom/html5_serializer.c
@@ -137,8 +137,8 @@ static zend_result dom_html5_serialize_text_node(dom_html5_serialize_context *ct
return SUCCESS;
}
- if (node->parent->type == XML_ELEMENT_NODE && php_dom_ns_is_fast(node->parent, php_dom_ns_is_html_magic_token)) {
- const xmlNode *parent = node->parent;
+ const xmlNode *parent = node->parent;
+ if (parent != NULL && parent->type == XML_ELEMENT_NODE && php_dom_ns_is_fast(parent, php_dom_ns_is_html_magic_token)) {
size_t name_length = strlen((const char *) parent->name);
/* Spec tells us to only emit noscript content as-is if scripting is enabled.
* However, the user agent (PHP) does not support (JS) scripting.
diff --git a/ext/dom/tests/gh15570.phpt b/ext/dom/tests/gh15570.phpt
new file mode 100644
index 000000000000..f2337cca2259
--- /dev/null
+++ b/ext/dom/tests/gh15570.phpt
@@ -0,0 +1,19 @@
+--TEST--
+GH-15570 (Segmentation fault (access null pointer) in ext/dom/html5_serializer.c)
+--CREDITS--
+YuanchengJiang
+--EXTENSIONS--
+dom
+--FILE--
+
+