From b32022cea2e25845f6d01c90833db822dadc5cd4 Mon Sep 17 00:00:00 2001 From: Erayd Date: Thu, 5 Oct 2017 17:23:06 +1300 Subject: [PATCH] Don't add a `file://` prefix to URI that already have a scheme 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)) {