From: Ilia Alshanetsky Date: Thu, 28 Sep 2006 14:52:55 +0000 (+0000) Subject: MFB: Fixed bug #38859 (parse_url() fails if passing '@' in passwd). X-Git-Tag: RELEASE_1_0_0RC1~1521 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7d3e03b2a75bf565b0085e24ee4f4b36e2e2acaa;p=php MFB: Fixed bug #38859 (parse_url() fails if passing '@' in passwd). --- diff --git a/ext/standard/tests/strings/url_t.phpt b/ext/standard/tests/strings/url_t.phpt index c0063fb3b4..21ba55a21a 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 41e03d5a34..a1e90f833e 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));