Correctly handle url's containing url's in WP_HTTP::make_absolute_url().

A valid relative URL could be mistaken for an absolute url if it contained a :// in any position of the url.
Fixes #28001


git-svn-id: https://develop.svn.wordpress.org/trunk@29850 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Dion Hulse
2014-10-08 05:37:56 +00:00
parent 60b8ed120a
commit e4268adfde
2 changed files with 10 additions and 5 deletions

View File

@@ -675,16 +675,17 @@ class WP_Http {
if ( empty( $url ) )
return $maybe_relative_path;
// Check for a scheme.
if ( false !== strpos( $maybe_relative_path, '://' ) )
return $maybe_relative_path;
if ( ! $url_parts = @parse_url( $url ) )
return $maybe_relative_path;
if ( ! $relative_url_parts = @parse_url( $maybe_relative_path ) )
return $maybe_relative_path;
// Check for a scheme on the 'relative' url
if ( ! empty( $relative_url_parts['scheme'] ) ) {
return $maybe_relative_path;
}
$absolute_path = $url_parts['scheme'] . '://' . $url_parts['host'];
if ( isset( $url_parts['port'] ) )
$absolute_path .= ':' . $url_parts['port'];