com php-src: Fix bug #73192: ext/standard/tests/url/bug73192.phpt ext/standard/tests/url/parse_url_basic_001.phpt
ext/standard/tests/url/parse_url_basic_002.php t ext/standard/tests/url/parse_url_basic_003.ph pt ext/standard/tests/url/parse_url_basic_004.p hpt
ext/standard/tests/url/parse_url_basic_005. phpt ext/standard/tests/url/parse_url_basic_006 .phpt ext/standard/tests/url/parse_url_basic_00 7.phpt
ext/standard/tests/url/parse_url_basic_0 08.phpt

From: Date: Fri, 07 Oct 2016 23:04:22 +0000
Subject: com php-src: Fix bug #73192: ext/standard/tests/url/bug73192.phpt ext/standard/tests/url/parse_url_basic_001.phpt
ext/standard/tests/url/parse_url_basic_002.php t ext/standard/tests/url/parse_url_basic_003.ph pt ext/standard/tests/url/parse_url_basic_004.p hpt
ext/standard/tests/url/parse_url_basic_005. phpt ext/standard/tests/url/parse_url_basic_006 .phpt ext/standard/tests/url/parse_url_basic_00 7.phpt
ext/standard/tests/url/parse_url_basic_0 08.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-94864@lists.php.net to get a copy of this message
Commit: b061fa909de77085d3822a89ab901b934d0362c4 Author: Nikita Popov <nikic@php.net> Sat, 8 Oct 2016 01:04:22 +0200 Parents: bc3a0b82b82e54dabe688dcc37f8ada92771da0f Branches: PHP-5.6 PHP-7.0 PHP-7.1 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b061fa909de77085d3822a89ab901b934d0362c4 Log: Fix bug #73192 Bugs: https://bugs.php.net/73192 Changed paths: A ext/standard/tests/url/bug73192.phpt M ext/standard/tests/url/parse_url_basic_001.phpt M ext/standard/tests/url/parse_url_basic_002.phpt M ext/standard/tests/url/parse_url_basic_003.phpt M ext/standard/tests/url/parse_url_basic_004.phpt M ext/standard/tests/url/parse_url_basic_005.phpt M ext/standard/tests/url/parse_url_basic_006.phpt M ext/standard/tests/url/parse_url_basic_007.phpt M ext/standard/tests/url/parse_url_basic_008.phpt M ext/standard/tests/url/parse_url_basic_009.phpt M ext/standard/url.c Diff: diff --git a/ext/standard/tests/url/bug73192.phpt b/ext/standard/tests/url/bug73192.phpt new file mode 100644 index 0000000..6ecb477 --- /dev/null +++ b/ext/standard/tests/url/bug73192.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #73192: parse_url return wrong hostname +--FILE-- +<?php + +var_dump(parse_url("http://example.com:80#@google.com/")); +var_dump(parse_url("http://example.com:80?@google.com/")); + +?> +--EXPECT-- +array(4) { + ["scheme"]=> + string(4) "http" + ["host"]=> + string(11) "example.com" + ["port"]=> + int(80) + ["fragment"]=> + string(12) "@google.com/" +} +array(4) { + ["scheme"]=> + string(4) "http" + ["host"]=> + string(11) "example.com" + ["port"]=> + int(80) + ["query"]=> + string(12) "@google.com/" +} diff --git a/ext/standard/tests/url/parse_url_basic_001.phpt b/ext/standard/tests/url/parse_url_basic_001.phpt index 0708691..e468066 100644 --- a/ext/standard/tests/url/parse_url_basic_001.phpt +++ b/ext/standard/tests/url/parse_url_basic_001.phpt @@ -763,25 +763,9 @@ echo "Done"; int(6) } ---> http://?:/: array(3) { - ["scheme"]=> - string(4) "http" - ["host"]=> - string(1) "?" - ["path"]=> - string(1) "/" -} +--> http://?:/: bool(false) ---> http://@?:/: array(4) { - ["scheme"]=> - string(4) "http" - ["host"]=> - string(1) "?" - ["user"]=> - string(0) "" - ["path"]=> - string(1) "/" -} +--> http://@?:/: bool(false) --> file:///:: array(2) { ["scheme"]=> diff --git a/ext/standard/tests/url/parse_url_basic_002.phpt b/ext/standard/tests/url/parse_url_basic_002.phpt index c05d1f4..f222ffc 100644 --- a/ext/standard/tests/url/parse_url_basic_002.phpt +++ b/ext/standard/tests/url/parse_url_basic_002.phpt @@ -98,8 +98,8 @@ echo "Done"; --> http://::? : string(4) "http" --> http://::# : string(4) "http" --> x://::6.5 : string(1) "x" ---> http://?:/ : string(4) "http" ---> http://@?:/ : string(4) "http" +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : string(4) "file" --> file:///a:/ : string(4) "file" --> file:///ab:/ : string(4) "file" diff --git a/ext/standard/tests/url/parse_url_basic_003.phpt b/ext/standard/tests/url/parse_url_basic_003.phpt index 88eda50..70dc4bb 100644 --- a/ext/standard/tests/url/parse_url_basic_003.phpt +++ b/ext/standard/tests/url/parse_url_basic_003.phpt @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : string(1) ":" --> http://::# : string(1) ":" --> x://::6.5 : string(1) ":" ---> http://?:/ : string(1) "?" ---> http://@?:/ : string(1) "?" +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL diff --git a/ext/standard/tests/url/parse_url_basic_004.phpt b/ext/standard/tests/url/parse_url_basic_004.phpt index e3b9abd..7ddddaf 100644 --- a/ext/standard/tests/url/parse_url_basic_004.phpt +++ b/ext/standard/tests/url/parse_url_basic_004.phpt @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : int(6) ---> http://?:/ : NULL ---> http://@?:/ : NULL +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL diff --git a/ext/standard/tests/url/parse_url_basic_005.phpt b/ext/standard/tests/url/parse_url_basic_005.phpt index 5b2cb98..b2ca06f 100644 --- a/ext/standard/tests/url/parse_url_basic_005.phpt +++ b/ext/standard/tests/url/parse_url_basic_005.phpt @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : NULL ---> http://@?:/ : string(0) "" +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL diff --git a/ext/standard/tests/url/parse_url_basic_006.phpt b/ext/standard/tests/url/parse_url_basic_006.phpt index 79af6b8..f0c251b 100644 --- a/ext/standard/tests/url/parse_url_basic_006.phpt +++ b/ext/standard/tests/url/parse_url_basic_006.phpt @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : NULL ---> http://@?:/ : NULL +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL diff --git a/ext/standard/tests/url/parse_url_basic_007.phpt b/ext/standard/tests/url/parse_url_basic_007.phpt index 8e04553..1b362bb 100644 --- a/ext/standard/tests/url/parse_url_basic_007.phpt +++ b/ext/standard/tests/url/parse_url_basic_007.phpt @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : string(1) "/" ---> http://@?:/ : string(1) "/" +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : string(2) "/:" --> file:///a:/ : string(3) "a:/" --> file:///ab:/ : string(5) "/ab:/" diff --git a/ext/standard/tests/url/parse_url_basic_008.phpt b/ext/standard/tests/url/parse_url_basic_008.phpt index 0c77221..1271f38 100644 --- a/ext/standard/tests/url/parse_url_basic_008.phpt +++ b/ext/standard/tests/url/parse_url_basic_008.phpt @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : NULL ---> http://@?:/ : NULL +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL diff --git a/ext/standard/tests/url/parse_url_basic_009.phpt b/ext/standard/tests/url/parse_url_basic_009.phpt index 487b271..72f172a 100644 --- a/ext/standard/tests/url/parse_url_basic_009.phpt +++ b/ext/standard/tests/url/parse_url_basic_009.phpt @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : NULL ---> http://@?:/ : NULL +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL diff --git a/ext/standard/url.c b/ext/standard/url.c index dd861a5..9627184 100644 --- a/ext/standard/url.c +++ b/ext/standard/url.c @@ -217,28 +217,7 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length) goto nohost; } - e = ue; - - if (!(p = memchr(s, '/', (ue - s)))) { - char *query, *fragment; - - query = memchr(s, '?', (ue - s)); - fragment = memchr(s, '#', (ue - s)); - - if (query && fragment) { - if (query > fragment) { - e = fragment; - } else { - e = query; - } - } else if (query) { - e = query; - } else if (fragment) { - e = fragment; - } - } else { - e = p; - } + e = s + strcspn(s, "/?#"); /* check for login and password */ if ((p = zend_memrchr(s, '@', (e-s)))) {

« previous php.cvs (#94864) next »