Issue #2867749 by pfrenssen, claudiu.cristea: Parsing an URL with another URL in the query arguments throws undefined offset notice
parent
d2a5fe79e2
commit
3c72c97d0b
|
|
@ -142,7 +142,12 @@ class UrlHelper {
|
||||||
|
|
||||||
// External URLs: not using parse_url() here, so we do not have to rebuild
|
// External URLs: not using parse_url() here, so we do not have to rebuild
|
||||||
// the scheme, host, and path without having any use for it.
|
// the scheme, host, and path without having any use for it.
|
||||||
if (strpos($url, '://') !== FALSE) {
|
// The URL is considered external if it contains the '://' delimiter. Since
|
||||||
|
// a URL can also be passed as a query argument, we check if this delimiter
|
||||||
|
// appears in front of the '?' query argument delimiter.
|
||||||
|
$scheme_delimiter_position = strpos($url, '://');
|
||||||
|
$query_delimiter_position = strpos($url, '?');
|
||||||
|
if ($scheme_delimiter_position !== FALSE && ($query_delimiter_position === FALSE || $scheme_delimiter_position < $query_delimiter_position)) {
|
||||||
// Split off everything before the query string into 'path'.
|
// Split off everything before the query string into 'path'.
|
||||||
$parts = explode('?', $url);
|
$parts = explode('?', $url);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -736,6 +736,7 @@ class UrlTest extends UnitTestCase {
|
||||||
['/?page=1000'],
|
['/?page=1000'],
|
||||||
['?page=1000'],
|
['?page=1000'],
|
||||||
['?breed=bengal&page=1000'],
|
['?breed=bengal&page=1000'],
|
||||||
|
['?referrer=https://kittenfacts'],
|
||||||
// Paths with various token formats but no leading slash.
|
// Paths with various token formats but no leading slash.
|
||||||
['/[duckies]'],
|
['/[duckies]'],
|
||||||
['/%bunnies'],
|
['/%bunnies'],
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue