diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2006-09-28 14:52:31 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2006-09-28 14:52:31 +0000 |
commit | e919a873cd49c4a7fe938528cea5fc782ee4fb9b (patch) | |
tree | 9ee3147b92d579bad269c7e94b5078648f40891c | |
parent | c0326fb1cec2f6badee7391d66951fba57b62371 (diff) | |
download | php-git-e919a873cd49c4a7fe938528cea5fc782ee4fb9b.tar.gz |
Fixed bug #38859 (parse_url() fails if passing '@' in passwd).
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | ext/standard/tests/strings/url_t.phpt | 21 | ||||
-rw-r--r-- | ext/standard/url.c | 2 |
3 files changed, 21 insertions, 3 deletions
@@ -16,6 +16,7 @@ PHP NEWS the imap library). (Ilia) - Fixed bug #38904 (apache2filter changes cwd to /). (Ilia, bjori) - Fixed bug #38891 (get_headers() do not work with curl-wrappers). (Ilia) +- Fixed bug #38859 (parse_url() fails if passing '@' in passwd). (Tony) - Fixed bug #38844 (curl_easy_strerror() is defined only since cURL 7.12.0). (Tony) - Fixed bug #38808 ("maybe ref" issue for current() and others). (Dmitry) diff --git a/ext/standard/tests/strings/url_t.phpt b/ext/standard/tests/strings/url_t.phpt index 2d18fa5c03..e0e5411036 100644 --- a/ext/standard/tests/strings/url_t.phpt +++ b/ext/standard/tests/strings/url_t.phpt @@ -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) diff --git a/ext/standard/url.c b/ext/standard/url.c index 0a4bae9410..3f217ef63c 100644 --- a/ext/standard/url.c +++ b/ext/standard/url.c @@ -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)); |