summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Reschke <lukas@statuscode.ch>2016-07-21 01:43:32 +0200
committerLukas Reschke <lukas@statuscode.ch>2016-07-21 01:43:32 +0200
commit19f770d0db516617fa6b533661c168cda95f5e14 (patch)
tree62bd3545adbc75cda0ecf6d6633ad7abf3987ae3
parent38b2239b0d1f7380c4293d910f1ed362ea386479 (diff)
downloadnextcloud-server-19f770d0db516617fa6b533661c168cda95f5e14.tar.gz
nextcloud-server-19f770d0db516617fa6b533661c168cda95f5e14.zip
Port https://github.com/nextcloud/server/commit/2d373416d8e54a7de84879a365c372a85104c6df to master
-rw-r--r--lib/private/IntegrityCheck/Checker.php13
-rw-r--r--lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php7
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/private/IntegrityCheck/Checker.php b/lib/private/IntegrityCheck/Checker.php
index 2af402196ae..d087720c11a 100644
--- a/lib/private/IntegrityCheck/Checker.php
+++ b/lib/private/IntegrityCheck/Checker.php
@@ -354,6 +354,19 @@ class Checker {
throw new InvalidSignatureException('Signature could not get verified.');
}
+ // Fixes for the updater as shipped with ownCloud 9.0.x: The updater is
+ // replaced after the code integrity check is performed.
+ //
+ // Due to this reason we exclude the whole updater/ folder from the code
+ // integrity check.
+ if($basePath === $this->environmentHelper->getServerRoot()) {
+ foreach($expectedHashes as $fileName => $hash) {
+ if(strpos($fileName, 'updater/') === 0) {
+ unset($expectedHashes[$fileName]);
+ }
+ }
+ }
+
// Compare the list of files which are not identical
$currentInstanceHashes = $this->generateHashes($this->getFolderIterator($basePath), $basePath);
$differencesA = array_diff($expectedHashes, $currentInstanceHashes);
diff --git a/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php b/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
index c8db8022112..3885f3dfa6a 100644
--- a/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
+++ b/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
@@ -29,7 +29,7 @@ class ExcludeFoldersByPathFilterIterator extends \RecursiveFilterIterator {
parent::__construct($iterator);
$appFolders = \OC::$APPSROOTS;
- foreach($appFolders as $key => $appFolder) {
+ foreach($appFolders as $key => $appFolder) {c
$appFolders[$key] = rtrim($appFolder['path'], '/');
}
@@ -40,6 +40,11 @@ class ExcludeFoldersByPathFilterIterator extends \RecursiveFilterIterator {
rtrim($root . '/apps', '/'),
rtrim($root . '/assets', '/'),
rtrim($root . '/lost+found', '/'),
+ // Ignore folders generated by updater since the updater is replaced
+ // after the integrity check is run.
+ // See https://github.com/owncloud/updater/issues/318#issuecomment-212497846
+ rtrim($root . '/updater', '/'),
+ rtrim($root . '/_oc_upgrade', '/'),
];
$customDataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', '');
if($customDataDir !== '') {