diff options
author | Xinchen Hui <laruence@gmail.com> | 2017-07-21 18:17:33 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2017-07-21 18:17:33 +0800 |
commit | 01090e6ced0d40544f2f5a5010c262023918e039 (patch) | |
tree | bc2be51c2677d0251d2e166eeff83b459e48d988 /ext | |
parent | 96ad72dc29cfa1bd6dad9a483adfa8dc5baefbb9 (diff) | |
parent | a8f98fc7f7c795eb6585e71160655a3cc06a9300 (diff) | |
download | php-git-01090e6ced0d40544f2f5a5010c262023918e039.tar.gz |
Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
Update NEWS
Fixed bug #74950 (nullpointer deref in simplexml_element_getDocNamespaces)
Diffstat (limited to 'ext')
-rw-r--r-- | ext/simplexml/simplexml.c | 12 | ||||
-rw-r--r-- | ext/simplexml/tests/bug74950.phpt | 16 |
2 files changed, 22 insertions, 6 deletions
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index bbe47d7ceb..0ec2c86f4a 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -2309,16 +2309,16 @@ SXE_METHOD(__construct) } if (ZEND_SIZE_T_INT_OVFL(data_len)) { - php_error_docref(NULL, E_WARNING, "Data is too long"); - RETURN_FALSE; + zend_throw_exception(zend_ce_exception, "Data is too long", 0); + return; } if (ZEND_SIZE_T_INT_OVFL(ns_len)) { - php_error_docref(NULL, E_WARNING, "Namespace is too long"); - RETURN_FALSE; + zend_throw_exception(zend_ce_exception, "Namespace is too long", 0); + return; } if (ZEND_LONG_EXCEEDS_INT(options)) { - php_error_docref(NULL, E_WARNING, "Invalid options"); - RETURN_FALSE; + zend_throw_exception(zend_ce_exception, "Invalid options", 0); + return; } docp = is_url ? xmlReadFile(data, NULL, (int)options) : xmlReadMemory(data, (int)data_len, NULL, NULL, (int)options); diff --git a/ext/simplexml/tests/bug74950.phpt b/ext/simplexml/tests/bug74950.phpt new file mode 100644 index 0000000000..f267a07a81 --- /dev/null +++ b/ext/simplexml/tests/bug74950.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #74950 (null pointer deref in zim_simplexml_element_getDocNamespaces) +--SKIPIF-- +<?php +if (!extension_loaded("simplexml")) die("skip SimpleXML not available"); +?> +--FILE-- +<?php +$xml=new SimpleXMLElement(0,9000000000);var_dump($xml->getDocNamespaces())?> +?> +--EXPECTF-- +Fatal error: Uncaught Exception: Invalid options in %sbug74950.php:%d +Stack trace: +#0 %sbug74950.php(%d): SimpleXMLElement->__construct('0', 9000000000) +#1 {main} + thrown in %sbug74950.php on line %d |