From 118c647f61c2e84ed0fe55375f4063a6a6f8756c Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 11 Aug 2021 17:35:37 +0200 Subject: properly handle cases where cache wrappers block access `CacheWrapper::formatCacheEntry` can return false for files that should be filtered out Signed-off-by: Robin Appelman --- build/psalm-baseline.xml | 3 --- lib/private/Files/Cache/Wrapper/CacheJail.php | 2 +- lib/private/Files/Cache/Wrapper/CacheWrapper.php | 5 +++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index 7a36e88eca3..156599e8b41 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -3509,9 +3509,6 @@ string string - - $this->view->hash($type, $this->path, $raw) - $this->exists diff --git a/lib/private/Files/Cache/Wrapper/CacheJail.php b/lib/private/Files/Cache/Wrapper/CacheJail.php index 540b6f7b8c3..7183a6c0d2a 100644 --- a/lib/private/Files/Cache/Wrapper/CacheJail.php +++ b/lib/private/Files/Cache/Wrapper/CacheJail.php @@ -328,7 +328,7 @@ class CacheJail extends CacheWrapper { if ($rawEntry) { $jailedPath = $this->getJailedPath($rawEntry->getPath()); if ($jailedPath !== null) { - return $this->formatCacheEntry(clone $rawEntry); + return $this->formatCacheEntry(clone $rawEntry) ?: null; } } diff --git a/lib/private/Files/Cache/Wrapper/CacheWrapper.php b/lib/private/Files/Cache/Wrapper/CacheWrapper.php index 8b8b4b6af80..e5300dc75f5 100644 --- a/lib/private/Files/Cache/Wrapper/CacheWrapper.php +++ b/lib/private/Files/Cache/Wrapper/CacheWrapper.php @@ -60,7 +60,7 @@ class CacheWrapper extends Cache { * Make it easy for wrappers to modify every returned cache entry * * @param ICacheEntry $entry - * @return ICacheEntry + * @return ICacheEntry|false */ protected function formatCacheEntry($entry) { return $entry; @@ -311,7 +311,8 @@ class CacheWrapper extends Cache { public function getCacheEntryFromSearchResult(ICacheEntry $rawEntry): ?ICacheEntry { $rawEntry = $this->getCache()->getCacheEntryFromSearchResult($rawEntry); if ($rawEntry) { - return $this->formatCacheEntry(clone $rawEntry); + $entry = $this->formatCacheEntry(clone $rawEntry); + return $entry ?: null; } return null; -- cgit v1.2.3