diff options
author | Joe Watkins <krakjoe@php.net> | 2016-11-12 17:46:40 +0000 |
---|---|---|
committer | Joe Watkins <krakjoe@php.net> | 2016-11-12 17:46:40 +0000 |
commit | 147f1f2e3bf4ec76fa98e46c6dd0104d599a35a6 (patch) | |
tree | 9d94bb164c53bdc31e0bffd08641d55c83137f7b /ext | |
parent | 2d865dfd358eb61174c2cedd9ed18d1e0872b840 (diff) | |
parent | beed682572de725ddbdcde7e98c02e968ab04e05 (diff) | |
download | php-git-147f1f2e3bf4ec76fa98e46c6dd0104d599a35a6.tar.gz |
fix news
Diffstat (limited to 'ext')
-rw-r--r-- | ext/xml/compat.c | 8 | ||||
-rw-r--r-- | ext/xml/tests/bug73135.phpt | 24 |
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 |