From bc5ad5686d5f239dbad48ab0300e80afb580bb38 Mon Sep 17 00:00:00 2001 From: Erayd Date: Tue, 10 Oct 2017 02:38:29 +1300 Subject: [PATCH] Don't add a `file://` prefix to URI that already have a scheme (#455) Some URI types do not pass validation against \FILTER_VAR_URL (e.g. phar://), but are still valid and still have a scheme. This patch catches those situations via a simple regex. --- src/JsonSchema/Uri/UriResolver.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/JsonSchema/Uri/UriResolver.php b/src/JsonSchema/Uri/UriResolver.php index ced7a8da..8ab6650e 100644 --- a/src/JsonSchema/Uri/UriResolver.php +++ b/src/JsonSchema/Uri/UriResolver.php @@ -77,7 +77,11 @@ public function generate(array $components) public function resolve($uri, $baseUri = null) { // treat non-uri base as local file path - if (!is_null($baseUri) && !filter_var($baseUri, \FILTER_VALIDATE_URL)) { + if ( + !is_null($baseUri) && + !filter_var($baseUri, \FILTER_VALIDATE_URL) && + !preg_match('|^[^/]+://|u', $baseUri) + ) { if (is_file($baseUri)) { $baseUri = 'file://' . realpath($baseUri); } elseif (is_dir($baseUri)) {