From 4792867357723d52bda2f050ff2abcc3a605ee17 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 19 May 2017 11:28:40 +0200 Subject: [PATCH] Stop infinit loop on invalid settings css/js file Don't try to find dirname of false... Signed-off-by: Joas Schilling --- lib/private/Template/CSSResourceLocator.php | 9 +++++++++ lib/private/Template/JSResourceLocator.php | 9 +++++++++ lib/private/Template/ResourceLocator.php | 8 ++++++++ 3 files changed, 26 insertions(+) diff --git a/lib/private/Template/CSSResourceLocator.php b/lib/private/Template/CSSResourceLocator.php index 5f210ef307..0150449ac9 100644 --- a/lib/private/Template/CSSResourceLocator.php +++ b/lib/private/Template/CSSResourceLocator.php @@ -62,6 +62,15 @@ class CSSResourceLocator extends ResourceLocator { $style = substr($style, strpos($style, '/')+1); $app_path = \OC_App::getAppPath($app); $app_url = \OC_App::getAppWebPath($app); + + if ($app_path === false && $app_url === false) { + $this->logger->error('Could not find resource {resource} to load', [ + 'resource' => $app . '/' . $style . '.css', + 'app' => 'cssresourceloader', + ]); + return; + } + if(!$this->cacheAndAppendScssIfExist($app_path, $style.'.scss', $app)) { $this->append($app_path, $style.'.css', $app_url); } diff --git a/lib/private/Template/JSResourceLocator.php b/lib/private/Template/JSResourceLocator.php index 32a01565c6..97a9eacedf 100644 --- a/lib/private/Template/JSResourceLocator.php +++ b/lib/private/Template/JSResourceLocator.php @@ -80,6 +80,15 @@ class JSResourceLocator extends ResourceLocator { $this->appendIfExist($app_path, $script . '.js', $app_url); return; } + + if ($app_path === false && $app_url === false) { + $this->logger->error('Could not find resource {resource} to load', [ + 'resource' => $app . '/' . $script . '.js', + 'app' => 'jsresourceloader', + ]); + return; + } + if (!$this->cacheAndAppendCombineJsonIfExist($app_path, $script.'.json', $app)) { $this->append($app_path, $script . '.js', $app_url); } diff --git a/lib/private/Template/ResourceLocator.php b/lib/private/Template/ResourceLocator.php index e82a77ba65..4e733d28f2 100755 --- a/lib/private/Template/ResourceLocator.php +++ b/lib/private/Template/ResourceLocator.php @@ -116,6 +116,14 @@ abstract class ResourceLocator { * @throws ResourceNotFoundException Only thrown when $throw is true and the resource is missing */ protected function append($root, $file, $webRoot = null, $throw = true) { + + if (!is_string($root)) { + if ($throw) { + throw new ResourceNotFoundException($file, $webRoot); + } + return; + } + if (!$webRoot) { $tmpRoot = $root; /*