mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
MFH: Fixed bug #35447 (xml_parse_into_struct() chokes on the UTF-8 BOM)
add test
This commit is contained in:
parent
2a130b19fc
commit
fc4ebee3e3
@ -405,15 +405,12 @@ XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *m
|
||||
efree(parser);
|
||||
return NULL;
|
||||
}
|
||||
if (encoding != NULL) {
|
||||
parser->parser->encoding = xmlStrdup(encoding);
|
||||
#if LIBXML_VERSION <= 20617
|
||||
/* for older versions of libxml2, allow correct detection of
|
||||
* charset in documents with a BOM: */
|
||||
} else {
|
||||
parser->parser->charset = XML_CHAR_ENCODING_NONE;
|
||||
parser->parser->charset = XML_CHAR_ENCODING_NONE;
|
||||
#endif
|
||||
}
|
||||
|
||||
parser->parser->replaceEntities = 1;
|
||||
parser->parser->wellFormed = 0;
|
||||
if (sep != NULL) {
|
||||
|
48
ext/xml/tests/bug35447.phpt
Normal file
48
ext/xml/tests/bug35447.phpt
Normal file
@ -0,0 +1,48 @@
|
||||
--TEST--
|
||||
Bug #35447 (xml_parse_into_struct() chokes on the UTF-8 BOM)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (! @xml_parser_create_ns('ISO-8859-1')) { die("skip xml_parser_create_ns is not supported on this plattform");}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$data = <<<END_OF_XML
|
||||
\xEF\xBB\xBF<?xml version="1.0" encoding="utf-8"?\x3e
|
||||
<!DOCTYPE bundle [
|
||||
<!ELEMENT bundle (resource)+>
|
||||
<!ELEMENT resource (#PCDATA)>
|
||||
<!ATTLIST resource
|
||||
key CDATA #REQUIRED
|
||||
type (literal|pattern|sub) "literal"
|
||||
>
|
||||
]>
|
||||
<resource key="rSeeYou">A bient&244;t</resource>
|
||||
END_OF_XML;
|
||||
|
||||
$parser = xml_parser_create_ns('UTF-8');
|
||||
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
|
||||
$result = xml_parse_into_struct($parser, $data, $vals, $index);
|
||||
xml_parser_free($parser);
|
||||
var_dump($vals);
|
||||
?>
|
||||
--EXPECT--
|
||||
array(1) {
|
||||
[0]=>
|
||||
array(5) {
|
||||
["tag"]=>
|
||||
string(8) "resource"
|
||||
["type"]=>
|
||||
string(8) "complete"
|
||||
["level"]=>
|
||||
int(1)
|
||||
["attributes"]=>
|
||||
array(2) {
|
||||
["key"]=>
|
||||
string(7) "rSeeYou"
|
||||
["type"]=>
|
||||
string(7) "literal"
|
||||
}
|
||||
["value"]=>
|
||||
string(13) "A bient&244;t"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user