Skip to content

Commit f2856da

Browse files
committed
Merge branch 'PHP-7.3'
* PHP-7.3: Fix #30875: xml_parse_into_struct() does not resolve entities
2 parents 6b015e5 + 54e152c commit f2856da

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

ext/xml/tests/bug30875.phpt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
--TEST--
2+
Bug #30875 (xml_parse_into_struct() does not resolve entities)
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('xml')) die('skip xml extension not available');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
$xml = <<<XML
11+
<!DOCTYPE dtd [
12+
<!ENTITY ref "ent">
13+
]>
14+
<elt att="&ref;">a&ref;</elt>
15+
XML;
16+
17+
$parser = xml_parser_create();
18+
xml_parse_into_struct($parser, $xml, $vals);
19+
xml_parser_free($parser);
20+
var_dump($vals);
21+
?>
22+
===DONE===
23+
--EXPECT--
24+
array(1) {
25+
[0]=>
26+
array(5) {
27+
["tag"]=>
28+
string(3) "ELT"
29+
["type"]=>
30+
string(8) "complete"
31+
["level"]=>
32+
int(1)
33+
["attributes"]=>
34+
array(1) {
35+
["ATT"]=>
36+
string(3) "ent"
37+
}
38+
["value"]=>
39+
string(4) "aent"
40+
}
41+
}
42+
===DONE===

ext/xml/xml.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1459,7 +1459,6 @@ PHP_FUNCTION(xml_parse_into_struct)
14591459
parser->level = 0;
14601460
parser->ltags = safe_emalloc(XML_MAXLEVEL, sizeof(char *), 0);
14611461

1462-
XML_SetDefaultHandler(parser->parser, _xml_defaultHandler);
14631462
XML_SetElementHandler(parser->parser, _xml_startElementHandler, _xml_endElementHandler);
14641463
XML_SetCharacterDataHandler(parser->parser, _xml_characterDataHandler);
14651464

0 commit comments

Comments
 (0)