From a32880380335a8bc25140ddb0e94b49c47416bbe Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Thu, 24 Apr 2014 23:49:52 -0700 Subject: Revert "Fixed bug #64604" This reverts commit b05c088a3abf8e4c6fb6e40418423a9e2dd3d929. Breaks parsing urls where query has : in it, like: /foo/bar?baz=goo:boo --- NEWS | 2 -- ext/standard/tests/url/bug64604.phpt | 40 ------------------------------------ ext/standard/url.c | 8 ++++---- 3 files changed, 4 insertions(+), 46 deletions(-) delete mode 100644 ext/standard/tests/url/bug64604.phpt diff --git a/NEWS b/NEWS index 6635a8e552..26a1791ddb 100644 --- a/NEWS +++ b/NEWS @@ -25,8 +25,6 @@ PHP NEWS . Fixed bug #61019 (Out of memory on command stream_get_contents). (Mike) . Fixed bug #64330 (stream_socket_server() creates wrong Abstract Namespace UNIX sockets). (Mike) - . Fixed bug #64604 (parse_url is inconsistent with specified port). - (Ingo Walz) . Fixed bug #66171 (Symlinks and session handler allow open_basedir bypass). (Jann Horn, Stas) . Fixed bug #66182 (exit in stream filter produces segfault). (Mike) diff --git a/ext/standard/tests/url/bug64604.phpt b/ext/standard/tests/url/bug64604.phpt deleted file mode 100644 index bbc3cb9d1b..0000000000 --- a/ext/standard/tests/url/bug64604.phpt +++ /dev/null @@ -1,40 +0,0 @@ ---TEST-- -Bug #64604 parse_url is inconsistent with specified port ---FILE-- - ---EXPECT-- -array(2) { - ["host"]=> - string(9) "localhost" - ["path"]=> - string(5) "/path" -} -array(3) { - ["host"]=> - string(9) "localhost" - ["port"]=> - int(80) - ["path"]=> - string(5) "/path" -} -array(2) { - ["host"]=> - string(9) "localhost" - ["path"]=> - string(5) "/path" -} -array(4) { - ["scheme"]=> - string(4) "http" - ["host"]=> - string(9) "localhost" - ["port"]=> - int(80) - ["path"]=> - string(5) "/path" -} diff --git a/ext/standard/url.c b/ext/standard/url.c index 16237e6599..d8271a18ed 100644 --- a/ext/standard/url.c +++ b/ext/standard/url.c @@ -181,10 +181,6 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length) p = e + 1; pp = p; - if (*s == '/' && *(s+1) == '/') { /* relative-scheme URL */ - s += 2; - } - while (pp-p < 6 && isdigit(*pp)) { pp++; } @@ -205,6 +201,10 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length) STR_FREE(ret->scheme); efree(ret); return NULL; + } else if (*s == '/' && *(s+1) == '/') { /* relative-scheme URL */ + s += 2; + } else { + goto just_path; } } else if (*s == '/' && *(s+1) == '/') { /* relative-scheme URL */ s += 2; -- cgit v1.2.1 From 03c703b8bd55679edf30fe17529fab0c2281b01f Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Thu, 24 Apr 2014 23:58:38 -0700 Subject: add a test case previously broken by a bad fix --- ext/standard/tests/url/parse_url_basic_001.phpt | 7 +++++++ ext/standard/tests/url/parse_url_basic_002.phpt | 1 + ext/standard/tests/url/parse_url_basic_003.phpt | 1 + ext/standard/tests/url/parse_url_basic_004.phpt | 1 + ext/standard/tests/url/parse_url_basic_005.phpt | 1 + ext/standard/tests/url/parse_url_basic_006.phpt | 1 + ext/standard/tests/url/parse_url_basic_007.phpt | 1 + ext/standard/tests/url/parse_url_basic_008.phpt | 1 + ext/standard/tests/url/parse_url_basic_009.phpt | 1 + ext/standard/tests/url/urls.inc | 1 + 10 files changed, 16 insertions(+) diff --git a/ext/standard/tests/url/parse_url_basic_001.phpt b/ext/standard/tests/url/parse_url_basic_001.phpt index 4c5b0944c6..a6f4f7a252 100644 --- a/ext/standard/tests/url/parse_url_basic_001.phpt +++ b/ext/standard/tests/url/parse_url_basic_001.phpt @@ -845,6 +845,13 @@ echo "Done"; string(1) "/" } +--> /rest/Users?filter={"id":"123"}: array(2) { + ["path"]=> + string(11) "/rest/Users" + ["query"]=> + string(19) "filter={"id":"123"}" +} + --> http:///blah.com: bool(false) --> http://:80: bool(false) diff --git a/ext/standard/tests/url/parse_url_basic_002.phpt b/ext/standard/tests/url/parse_url_basic_002.phpt index ed0f08a84f..c05d1f487a 100644 --- a/ext/standard/tests/url/parse_url_basic_002.phpt +++ b/ext/standard/tests/url/parse_url_basic_002.phpt @@ -110,6 +110,7 @@ echo "Done"; --> http://[x:80]/ : string(4) "http" --> : NULL --> / : NULL +--> /rest/Users?filter={"id":"123"} : NULL --> http:///blah.com : bool(false) --> http://:80 : bool(false) --> http://user@:80 : bool(false) diff --git a/ext/standard/tests/url/parse_url_basic_003.phpt b/ext/standard/tests/url/parse_url_basic_003.phpt index a2bbfa6482..88eda504d5 100644 --- a/ext/standard/tests/url/parse_url_basic_003.phpt +++ b/ext/standard/tests/url/parse_url_basic_003.phpt @@ -109,6 +109,7 @@ echo "Done"; --> http://[x:80]/ : string(6) "[x:80]" --> : NULL --> / : NULL +--> /rest/Users?filter={"id":"123"} : NULL --> http:///blah.com : bool(false) --> http://:80 : bool(false) --> http://user@:80 : bool(false) diff --git a/ext/standard/tests/url/parse_url_basic_004.phpt b/ext/standard/tests/url/parse_url_basic_004.phpt index 839ebee554..e3b9abd91c 100644 --- a/ext/standard/tests/url/parse_url_basic_004.phpt +++ b/ext/standard/tests/url/parse_url_basic_004.phpt @@ -109,6 +109,7 @@ echo "Done"; --> http://[x:80]/ : NULL --> : NULL --> / : NULL +--> /rest/Users?filter={"id":"123"} : NULL --> http:///blah.com : bool(false) --> http://:80 : bool(false) --> http://user@:80 : bool(false) diff --git a/ext/standard/tests/url/parse_url_basic_005.phpt b/ext/standard/tests/url/parse_url_basic_005.phpt index c113461fe7..1fc946e5b3 100644 --- a/ext/standard/tests/url/parse_url_basic_005.phpt +++ b/ext/standard/tests/url/parse_url_basic_005.phpt @@ -109,6 +109,7 @@ echo "Done"; --> http://[x:80]/ : NULL --> : NULL --> / : NULL +--> /rest/Users?filter={"id":"123"} : NULL --> http:///blah.com : bool(false) --> http://:80 : bool(false) --> http://user@:80 : bool(false) diff --git a/ext/standard/tests/url/parse_url_basic_006.phpt b/ext/standard/tests/url/parse_url_basic_006.phpt index 24de1cc233..5104326198 100644 --- a/ext/standard/tests/url/parse_url_basic_006.phpt +++ b/ext/standard/tests/url/parse_url_basic_006.phpt @@ -109,6 +109,7 @@ echo "Done"; --> http://[x:80]/ : NULL --> : NULL --> / : NULL +--> /rest/Users?filter={"id":"123"} : NULL --> http:///blah.com : bool(false) --> http://:80 : bool(false) --> http://user@:80 : bool(false) diff --git a/ext/standard/tests/url/parse_url_basic_007.phpt b/ext/standard/tests/url/parse_url_basic_007.phpt index d4006879f4..8e04553983 100644 --- a/ext/standard/tests/url/parse_url_basic_007.phpt +++ b/ext/standard/tests/url/parse_url_basic_007.phpt @@ -109,6 +109,7 @@ echo "Done"; --> http://[x:80]/ : string(1) "/" --> : string(0) "" --> / : string(1) "/" +--> /rest/Users?filter={"id":"123"} : string(11) "/rest/Users" --> http:///blah.com : bool(false) --> http://:80 : bool(false) --> http://user@:80 : bool(false) diff --git a/ext/standard/tests/url/parse_url_basic_008.phpt b/ext/standard/tests/url/parse_url_basic_008.phpt index b283829c46..0c77221465 100644 --- a/ext/standard/tests/url/parse_url_basic_008.phpt +++ b/ext/standard/tests/url/parse_url_basic_008.phpt @@ -109,6 +109,7 @@ echo "Done"; --> http://[x:80]/ : NULL --> : NULL --> / : NULL +--> /rest/Users?filter={"id":"123"} : string(19) "filter={"id":"123"}" --> http:///blah.com : bool(false) --> http://:80 : bool(false) --> http://user@:80 : bool(false) diff --git a/ext/standard/tests/url/parse_url_basic_009.phpt b/ext/standard/tests/url/parse_url_basic_009.phpt index a7d70f34da..487b271149 100644 --- a/ext/standard/tests/url/parse_url_basic_009.phpt +++ b/ext/standard/tests/url/parse_url_basic_009.phpt @@ -109,6 +109,7 @@ echo "Done"; --> http://[x:80]/ : NULL --> : NULL --> / : NULL +--> /rest/Users?filter={"id":"123"} : NULL --> http:///blah.com : bool(false) --> http://:80 : bool(false) --> http://user@:80 : bool(false) diff --git a/ext/standard/tests/url/urls.inc b/ext/standard/tests/url/urls.inc index 4192f4a869..d8ffe91378 100644 --- a/ext/standard/tests/url/urls.inc +++ b/ext/standard/tests/url/urls.inc @@ -89,6 +89,7 @@ $urls = array( 'http://[x:80]/', '', '/', +'/rest/Users?filter={"id":"123"}', // Severely malformed URLs that do not parse: 'http:///blah.com', -- cgit v1.2.1 From 81098de41c37e50d408b2312324f4f572e57f3d0 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Fri, 25 Apr 2014 00:00:01 -0700 Subject: update NEWS --- NEWS | 2 -- 1 file changed, 2 deletions(-) diff --git a/NEWS b/NEWS index f1c0394319..5f8a0df914 100644 --- a/NEWS +++ b/NEWS @@ -30,8 +30,6 @@ PHP NEWS . Fixed bug #61019 (Out of memory on command stream_get_contents). (Mike) . Fixed bug #64330 (stream_socket_server() creates wrong Abstract Namespace UNIX sockets). (Mike) - . Fixed bug #64604 (parse_url is inconsistent with specified port). - (Ingo Walz) . Fixed bug #66182 (exit in stream filter produces segfault). (Mike) . Fixed bug #66736 (fpassthru broken). (Mike) . Fixed bug #67024 (getimagesize should recognize BMP files with negative -- cgit v1.2.1