diff options
author | Felipe Pena <felipensp@gmail.com> | 2014-05-10 11:53:40 -0300 |
---|---|---|
committer | Felipe Pena <felipensp@gmail.com> | 2014-05-10 11:53:40 -0300 |
commit | 345f6d90d5947c5cf380db79c1c6366a72cc6e8d (patch) | |
tree | ba556ddd9a5eca78e752c8295043f3bbcb2eb28a | |
parent | 5bd443a4520a542cd3f86f9d549eca78f693f730 (diff) | |
download | php-git-345f6d90d5947c5cf380db79c1c6366a72cc6e8d.tar.gz |
- Fixed missing NULL check in SimpleXMLElement::xpath()
-rw-r--r-- | ext/simplexml/simplexml.c | 3 | ||||
-rw-r--r-- | ext/simplexml/tests/SimpleXMLElement_xpath.phpt | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 006d6c9491..0f05f52c1c 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -1270,6 +1270,9 @@ SXE_METHOD(xpath) if (!sxe->node) { php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe->document->ptr), NULL TSRMLS_CC); } + if (!sxe->node) { + RETURN_FALSE; + } nodeptr = php_sxe_get_first_node(sxe, sxe->node->node TSRMLS_CC); diff --git a/ext/simplexml/tests/SimpleXMLElement_xpath.phpt b/ext/simplexml/tests/SimpleXMLElement_xpath.phpt new file mode 100644 index 0000000000..4a613c2e51 --- /dev/null +++ b/ext/simplexml/tests/SimpleXMLElement_xpath.phpt @@ -0,0 +1,8 @@ +--TEST-- +Testing xpath() with invalid XML +--FILE-- +<?php +$xml = @simplexml_load_string("XXXXXXX^",$x,0x6000000000000001); +var_dump($xml->xpath("BBBB")); +--EXPECT-- +bool(false) |