mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00
Cherry pick some recent lexbor changes
The following changes are cherry-picked: -c60846689d
core/str.c: Fix undefined behavior in function lexbor_str_append -92260fd670
URL: fixed hostname setter if port is specified.
This commit is contained in:
parent
a22dc67a21
commit
889f38135d
3 changed files with 23 additions and 31 deletions
|
@ -133,6 +133,10 @@ lexbor_str_append(lexbor_str_t *str, lexbor_mraw_t *mraw,
|
|||
{
|
||||
lxb_char_t *data_begin;
|
||||
|
||||
if (length == 0) {
|
||||
return str->data;
|
||||
}
|
||||
|
||||
lexbor_str_check_size_arg_m(str, lexbor_str_size(str),
|
||||
mraw, (length + 1), NULL);
|
||||
|
||||
|
|
|
@ -1818,7 +1818,7 @@ again:
|
|||
}
|
||||
|
||||
if (override_state == LXB_URL_STATE_HOSTNAME_STATE) {
|
||||
lxb_url_parse_return(orig_data, buf, LXB_STATUS_OK);
|
||||
lxb_url_parse_return(orig_data, buf, LXB_STATUS_ERROR);
|
||||
}
|
||||
|
||||
status = lxb_url_host_parse(parser, begin, p, &url->host,
|
||||
|
|
|
@ -8,21 +8,27 @@ uri
|
|||
$url1 = Uri\WhatWg\Url::parse("https://example.com");
|
||||
$url2 = $url1->withHost("test.com");
|
||||
$url3 = $url2->withHost("t%65st.com"); // test.com
|
||||
$url4 = $url3->withHost("test.com:8080");
|
||||
|
||||
var_dump($url1->getAsciiHost());
|
||||
var_dump($url2->getAsciiHost());
|
||||
var_dump($url3->getAsciiHost());
|
||||
var_dump($url4->getAsciiHost());
|
||||
var_dump($url4->getPort());
|
||||
|
||||
try {
|
||||
$url4->withHost("t%3As%2Ft.com"); // t:s/t.com
|
||||
$url3->withHost("test.com:8080");
|
||||
} catch (Uri\WhatWg\InvalidUrlException $e) {
|
||||
echo $e->getMessage() . "\n";
|
||||
}
|
||||
|
||||
var_dump($url4->withHost("t:s/t.com"));
|
||||
var_dump($url1->getAsciiHost());
|
||||
var_dump($url2->getAsciiHost());
|
||||
var_dump($url3->getAsciiHost());
|
||||
|
||||
try {
|
||||
$url3->withHost("t%3As%2Ft.com"); // t:s/t.com
|
||||
} catch (Uri\WhatWg\InvalidUrlException $e) {
|
||||
echo $e->getMessage() . "\n";
|
||||
}
|
||||
|
||||
try {
|
||||
$url3->withHost("t:s/t.com"); // t:s/t.com
|
||||
} catch (Uri\WhatWg\InvalidUrlException $e) {
|
||||
echo $e->getMessage() . "\n";
|
||||
}
|
||||
|
||||
try {
|
||||
$url2->withHost(null);
|
||||
|
@ -38,30 +44,12 @@ var_dump($url2->getAsciiHost());
|
|||
|
||||
?>
|
||||
--EXPECTF--
|
||||
The specified host is malformed
|
||||
string(11) "example.com"
|
||||
string(8) "test.com"
|
||||
string(8) "test.com"
|
||||
string(8) "test.com"
|
||||
NULL
|
||||
The specified host is malformed (DomainInvalidCodePoint)
|
||||
object(Uri\WhatWg\Url)#%d (%d) {
|
||||
["scheme"]=>
|
||||
string(5) "https"
|
||||
["username"]=>
|
||||
NULL
|
||||
["password"]=>
|
||||
NULL
|
||||
["host"]=>
|
||||
string(8) "test.com"
|
||||
["port"]=>
|
||||
NULL
|
||||
["path"]=>
|
||||
string(1) "/"
|
||||
["query"]=>
|
||||
NULL
|
||||
["fragment"]=>
|
||||
NULL
|
||||
}
|
||||
The specified host is malformed
|
||||
The specified host is malformed (HostMissing)
|
||||
string(7) "foo.com"
|
||||
string(8) "test.com"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue