MFB: Fixed bug #38859 (parse_url() fails if passing '@' in passwd).

This commit is contained in:
Ilia Alshanetsky 2006-09-28 14:52:55 +00:00
parent a005d97eeb
commit 7d3e03b2a7
2 changed files with 20 additions and 3 deletions

View File

@ -71,6 +71,7 @@ $sample_urls = array (
'scheme:',
'foo+bar://baz@bang/bla',
'gg:9130731',
'http://user:@pass@host/path?argument?value#etc',
);
foreach ($sample_urls as $url) {
@ -525,11 +526,11 @@ array(7) {
["scheme"]=>
string(4) "http"
["host"]=>
string(19) "hideout@www.php.net"
string(11) "www.php.net"
["port"]=>
int(80)
["user"]=>
string(6) "secret"
string(14) "secret@hideout"
["path"]=>
string(10) "/index.php"
["query"]=>
@ -685,6 +686,22 @@ array(2) {
["path"]=>
string(7) "9130731"
}
array(7) {
["scheme"]=>
string(4) "http"
["host"]=>
string(4) "host"
["user"]=>
string(4) "user"
["pass"]=>
string(5) "@pass"
["path"]=>
string(5) "/path"
["query"]=>
string(14) "argument?value"
["fragment"]=>
string(3) "etc"
}
string(4) "http"
string(11) "www.php.net"
int(80)

View File

@ -211,7 +211,7 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length)
}
/* check for login and password */
if ((p = memchr(s, '@', (e-s)))) {
if ((p = zend_memrchr(s, '@', (e-s)))) {
if ((pp = memchr(s, ':', (p-s)))) {
if ((pp-s) > 0) {
ret->user = estrndup(s, (pp-s));