]> granicus.if.org Git - php/commitdiff
Fixed bug #38859 (parse_url() fails if passing '@' in passwd).
authorIlia Alshanetsky <iliaa@php.net>
Thu, 28 Sep 2006 14:52:31 +0000 (14:52 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 28 Sep 2006 14:52:31 +0000 (14:52 +0000)
NEWS
ext/standard/tests/strings/url_t.phpt
ext/standard/url.c

diff --git a/NEWS b/NEWS
index 081f955fc4a2f9b14336ce015c37e1b1930e3a4d..37f06b5bab2963174fd620e30f20fe272bf59c70 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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)
index 2d18fa5c036aac1f464bcfe8cb9553d095a4edbc..e0e54110364ef2e9db5574eead15305d8a4d9421 100644 (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)
index 0a4bae9410eeaaa2a5205f85cc54897d27d6ad2e..3f217ef63cdfbf751537734ba8326fc44aed22ac 100644 (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));