]> granicus.if.org Git - php/commitdiff
Add a missing null check in simplexml
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 13 Aug 2020 14:34:56 +0000 (16:34 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 13 Aug 2020 14:46:08 +0000 (16:46 +0200)
ext/simplexml/simplexml.c
ext/simplexml/tests/simplexml_uninitialized.phpt

index 4688fed5b4e7bd050081184e5ad2e7ef36d1ba57..afd655aeedd736c4f0a14d0e1d0041bdf4a8efbd 100644 (file)
@@ -1390,6 +1390,11 @@ SXE_METHOD(registerXPathNamespace)
        }
 
        sxe = Z_SXEOBJ_P(ZEND_THIS);
+       if (!sxe->document) {
+               zend_throw_error(NULL, "SimpleXMLElement is not properly initialized");
+               RETURN_THROWS();
+       }
+
        if (!sxe->xpath) {
                sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr);
        }
index 9361f232a10956434dc54cc8f08b19879151e23a..0c6cfd1e1e05ce554c630eb425bd984f7e9838ec 100644 (file)
@@ -35,6 +35,11 @@ try {
 } catch (Error $e) {
     echo $e->getMessage(), "\n";
 }
+try {
+    var_dump($sxe->registerXPathNamespace('', ''));
+} catch (Error $e) {
+    echo $e->getMessage(), "\n";
+}
 try {
     var_dump($sxe->foo);
 } catch (Error $e) {
@@ -49,3 +54,4 @@ SimpleXMLElement is not properly initialized
 SimpleXMLElement is not properly initialized
 SimpleXMLElement is not properly initialized
 SimpleXMLElement is not properly initialized
+SimpleXMLElement is not properly initialized