diff --git a/Libraries/LibWeb/XPath/XPath.cpp b/Libraries/LibWeb/XPath/XPath.cpp index a7b4ec67fe..96f38e24ac 100644 --- a/Libraries/LibWeb/XPath/XPath.cpp +++ b/Libraries/LibWeb/XPath/XPath.cpp @@ -92,7 +92,10 @@ static xmlNodePtr mirror_node(xmlDocPtr doc, DOM::Node const& node) } case DOM::NodeType::DOCUMENT_NODE: { auto const& document = static_cast(node); - return mirror_node(doc, *document.document_element()); + auto const* document_element = document.document_element(); + if (!document_element) + return nullptr; + return mirror_node(doc, *document_element); } case DOM::NodeType::DOCUMENT_TYPE_NODE: { return nullptr; // Unused in libxml2 diff --git a/Tests/LibWeb/Crash/DOM/xpath-evaluate-rootless-document.html b/Tests/LibWeb/Crash/DOM/xpath-evaluate-rootless-document.html new file mode 100644 index 0000000000..25ec545aa1 --- /dev/null +++ b/Tests/LibWeb/Crash/DOM/xpath-evaluate-rootless-document.html @@ -0,0 +1,6 @@ + +