summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorJoe Watkins <krakjoe@php.net>2016-11-12 17:46:40 +0000
committerJoe Watkins <krakjoe@php.net>2016-11-12 17:46:40 +0000
commit147f1f2e3bf4ec76fa98e46c6dd0104d599a35a6 (patch)
tree9d94bb164c53bdc31e0bffd08641d55c83137f7b /ext
parent2d865dfd358eb61174c2cedd9ed18d1e0872b840 (diff)
parentbeed682572de725ddbdcde7e98c02e968ab04e05 (diff)
downloadphp-git-147f1f2e3bf4ec76fa98e46c6dd0104d599a35a6.tar.gz
fix news
Diffstat (limited to 'ext')
-rw-r--r--ext/xml/compat.c8
-rw-r--r--ext/xml/tests/bug73135.phpt24
2 files changed, 29 insertions, 3 deletions
diff --git a/ext/xml/compat.c b/ext/xml/compat.c
index 3fc203ee23..d39afacc0b 100644
--- a/ext/xml/compat.c
+++ b/ext/xml/compat.c
@@ -593,10 +593,12 @@ has been defined and none can be detected */
}
#endif
+ if (parser->parser->lastError.level >= XML_ERR_WARNING) {
+ return 0;
+ }
+
error = xmlParseChunk(parser->parser, (char *) data, data_len, is_final);
- if (!error) {
- return 1;
- } else if (parser->parser->lastError.level > XML_ERR_WARNING ){
+ if (error) {
return 0;
} else {
return 1;
diff --git a/ext/xml/tests/bug73135.phpt b/ext/xml/tests/bug73135.phpt
new file mode 100644
index 0000000000..5fb43e91db
--- /dev/null
+++ b/ext/xml/tests/bug73135.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Bug #73135 (xml_parse() segmentation fault)
+--CREDITS--
+edgarsandi - <edgar.r.sandi@gmail.com>
+--FILE--
+<?php
+ function start_elem($parser, $xml) {
+ xml_parse($parser, $xml);
+ }
+
+ $xml = <<<HERE
+ <a xmlns="ahihi">
+ <bar foo="ahihi"/>
+ </a>
+HERE;
+
+ $parser = xml_parser_create_ns();
+ xml_set_element_handler($parser, 'start_elem', 'ahihi');
+ xml_parse($parser, $xml);
+?>
+--EXPECTF--
+Warning: xml_parse(): Unable to call handler ahihi() in %s%ebug73135.php on line %d
+
+Warning: xml_parse(): Unable to call handler ahihi() in %s%ebug73135.php on line %d \ No newline at end of file