diff options
author | Joas Schilling <coding@schilljs.com> | 2017-05-19 11:28:40 +0200 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2017-05-19 11:40:10 +0200 |
commit | 8a570aebf6e08df094ae3ea653418ad31be50b94 (patch) | |
tree | 4bce4f438f2e8e2412a334fda89b967025cbf2c6 | |
parent | e14bd212f7af41e1264cddeead588171e8a43fdf (diff) | |
download | nextcloud-server-8a570aebf6e08df094ae3ea653418ad31be50b94.tar.gz nextcloud-server-8a570aebf6e08df094ae3ea653418ad31be50b94.zip |
Stop infinit loop on invalid settings css/js file
Don't try to find dirname of false...
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r-- | lib/private/Template/CSSResourceLocator.php | 9 | ||||
-rw-r--r-- | lib/private/Template/JSResourceLocator.php | 9 | ||||
-rwxr-xr-x | lib/private/Template/ResourceLocator.php | 8 |
3 files changed, 26 insertions, 0 deletions
diff --git a/lib/private/Template/CSSResourceLocator.php b/lib/private/Template/CSSResourceLocator.php index 5f210ef307a..0150449ac9f 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 32a01565c69..97a9eacedf5 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 e82a77ba65f..4e733d28f26 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; /* |