Re: 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.phpt ext/standard/tests/url/parse_url_basic_003.phpt ext/standard/tests/url/parse_url_basic_004.phpt
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_007.phpt
ext/standard/tests/url/parse_url_basic_008.phpt
| From: | Remi Collet | Date: | Thu, 10 Nov 2016 08:56:58 +0000 |
| Subject: | Re: 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.phpt ext/standard/tests/url/parse_url_basic_003.phpt ext/standard/tests/url/parse_url_basic_004.phpt 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_007.phpt ext/standard/tests/url/parse_url_basic_008.phpt |
||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-95481@lists.php.net to get a copy of this message | ||
Le 08/10/2016 à 01:04, Nikita Popov a écrit :
> 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
Please notice that this change breaks (at least) pecl/ssh2 extension.
Having to fix tests should have be an alarm...
Remi.
>
> 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)))) {
>
>