mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Fix GHSA-wg4p-4hqh-c3g9
This commit is contained in:
parent
b6004a043c
commit
0e715e71d9
2 changed files with 50 additions and 4 deletions
42
ext/xml/tests/toffset_bounds.phpt
Normal file
42
ext/xml/tests/toffset_bounds.phpt
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
--TEST--
|
||||||
|
XML_OPTION_SKIP_TAGSTART bounds
|
||||||
|
--EXTENSIONS--
|
||||||
|
xml
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
$sample = "<?xml version=\"1.0\"?><test><child/></test>";
|
||||||
|
$parser = xml_parser_create();
|
||||||
|
xml_parser_set_option($parser, XML_OPTION_SKIP_TAGSTART, 100);
|
||||||
|
$res = xml_parse_into_struct($parser,$sample,$vals,$index);
|
||||||
|
var_dump($vals);
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
array(3) {
|
||||||
|
[0]=>
|
||||||
|
array(3) {
|
||||||
|
["tag"]=>
|
||||||
|
string(0) ""
|
||||||
|
["type"]=>
|
||||||
|
string(4) "open"
|
||||||
|
["level"]=>
|
||||||
|
int(1)
|
||||||
|
}
|
||||||
|
[1]=>
|
||||||
|
array(3) {
|
||||||
|
["tag"]=>
|
||||||
|
string(0) ""
|
||||||
|
["type"]=>
|
||||||
|
string(8) "complete"
|
||||||
|
["level"]=>
|
||||||
|
int(2)
|
||||||
|
}
|
||||||
|
[2]=>
|
||||||
|
array(3) {
|
||||||
|
["tag"]=>
|
||||||
|
string(0) ""
|
||||||
|
["type"]=>
|
||||||
|
string(5) "close"
|
||||||
|
["level"]=>
|
||||||
|
int(1)
|
||||||
|
}
|
||||||
|
}
|
|
@ -667,9 +667,11 @@ void _xml_startElementHandler(void *userData, const XML_Char *name, const XML_Ch
|
||||||
array_init(&tag);
|
array_init(&tag);
|
||||||
array_init(&atr);
|
array_init(&atr);
|
||||||
|
|
||||||
_xml_add_to_info(parser, ZSTR_VAL(tag_name) + parser->toffset);
|
char *skipped_tag_name = SKIP_TAGSTART(ZSTR_VAL(tag_name));
|
||||||
|
|
||||||
add_assoc_string(&tag, "tag", SKIP_TAGSTART(ZSTR_VAL(tag_name))); /* cast to avoid gcc-warning */
|
_xml_add_to_info(parser, skipped_tag_name);
|
||||||
|
|
||||||
|
add_assoc_string(&tag, "tag", skipped_tag_name);
|
||||||
add_assoc_string(&tag, "type", "open");
|
add_assoc_string(&tag, "type", "open");
|
||||||
add_assoc_long(&tag, "level", parser->level);
|
add_assoc_long(&tag, "level", parser->level);
|
||||||
|
|
||||||
|
@ -736,9 +738,11 @@ void _xml_endElementHandler(void *userData, const XML_Char *name)
|
||||||
} else {
|
} else {
|
||||||
array_init(&tag);
|
array_init(&tag);
|
||||||
|
|
||||||
_xml_add_to_info(parser, ZSTR_VAL(tag_name) + parser->toffset);
|
char *skipped_tag_name = SKIP_TAGSTART(ZSTR_VAL(tag_name));
|
||||||
|
|
||||||
add_assoc_string(&tag, "tag", SKIP_TAGSTART(ZSTR_VAL(tag_name))); /* cast to avoid gcc-warning */
|
_xml_add_to_info(parser, skipped_tag_name);
|
||||||
|
|
||||||
|
add_assoc_string(&tag, "tag", skipped_tag_name);
|
||||||
add_assoc_string(&tag, "type", "close");
|
add_assoc_string(&tag, "type", "close");
|
||||||
add_assoc_long(&tag, "level", parser->level);
|
add_assoc_long(&tag, "level", parser->level);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue