diff --git a/NEWS b/NEWS index 08f6b37c6e7..f3cff388ab4 100644 --- a/NEWS +++ b/NEWS @@ -33,6 +33,9 @@ PHP NEWS . Fixed bug #76965 (INI_SCANNER_RAW doesn't strip trailing whitespace). (Pierrick) +- XML: + . Fixed bug #30875 (xml_parse_into_struct() does not resolve entities). (cmb) + 11 Oct 2018, PHP 7.2.11 - Core: diff --git a/ext/xml/tests/bug30875.phpt b/ext/xml/tests/bug30875.phpt new file mode 100644 index 00000000000..c5254e96688 --- /dev/null +++ b/ext/xml/tests/bug30875.phpt @@ -0,0 +1,42 @@ +--TEST-- +Bug #30875 (xml_parse_into_struct() does not resolve entities) +--SKIPIF-- + +--FILE-- + +]> +a&ref; +XML; + +$parser = xml_parser_create(); +xml_parse_into_struct($parser, $xml, $vals); +xml_parser_free($parser); +var_dump($vals); +?> +===DONE=== +--EXPECT-- +array(1) { + [0]=> + array(5) { + ["tag"]=> + string(3) "ELT" + ["type"]=> + string(8) "complete" + ["level"]=> + int(1) + ["attributes"]=> + array(1) { + ["ATT"]=> + string(3) "ent" + } + ["value"]=> + string(4) "aent" + } +} +===DONE=== diff --git a/ext/xml/xml.c b/ext/xml/xml.c index 7f1bb305716..9b8281e1b35 100644 --- a/ext/xml/xml.c +++ b/ext/xml/xml.c @@ -1437,7 +1437,6 @@ PHP_FUNCTION(xml_parse_into_struct) parser->level = 0; parser->ltags = safe_emalloc(XML_MAXLEVEL, sizeof(char *), 0); - XML_SetDefaultHandler(parser->parser, _xml_defaultHandler); XML_SetElementHandler(parser->parser, _xml_startElementHandler, _xml_endElementHandler); XML_SetCharacterDataHandler(parser->parser, _xml_characterDataHandler);