diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-09-19 12:20:22 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-09-19 12:20:22 +0200 |
commit | f0186d99d23a0e185b38be16e84388ab31e12553 (patch) | |
tree | 50f360fbc3c92674b21a32fda9162b1c0ad362b3 /lib | |
parent | 33f7af9207f941a2068023764188d7b7f29fb0f0 (diff) | |
parent | a71af58535338f72061d5dbe31289ad132d0fa3a (diff) | |
download | nextcloud-server-f0186d99d23a0e185b38be16e84388ab31e12553.tar.gz nextcloud-server-f0186d99d23a0e185b38be16e84388ab31e12553.zip |
Merge pull request #11163 from owncloud/check-for-updates-between-major-versions
Prevent updates between multiple major versions
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/updater.php | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/private/updater.php b/lib/private/updater.php index 1d52f9be374..a2aa8bf33e9 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -146,15 +146,37 @@ class Updater extends BasicEmitter { } /** + * Whether an upgrade to a specified version is possible + * @param string $oldVersion + * @param string $newVersion + * @return bool + */ + public function isUpgradePossible($oldVersion, $newVersion) { + $oldVersion = explode('.', $oldVersion); + $newVersion = explode('.', $newVersion); + + if($newVersion[0] > ($oldVersion[0] + 1) || $oldVersion[0] > $newVersion[0]) { + return false; + } + return true; + } + + /** * runs the update actions in maintenance mode, does not upgrade the source files * except the main .htaccess file * * @param string $currentVersion current version to upgrade to * @param string $installedVersion previous version from which to upgrade from * + * @throws \Exception * @return bool true if the operation succeeded, false otherwise */ private function doUpgrade($currentVersion, $installedVersion) { + // Stop update if the update is over several major versions + if (!self::isUpgradePossible($installedVersion, $currentVersion)) { + throw new \Exception('Updates between multiple major versions are unsupported.'); + } + // Update htaccess files for apache hosts if (isset($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) { \OC_Setup::updateHtaccess(); @@ -235,7 +257,7 @@ class Updater extends BasicEmitter { } /** - * @param string $version the oc version to check app compatibilty with + * @param string $version the oc version to check app compatibility with */ protected function checkAppUpgrade($version) { $apps = \OC_App::getEnabledApps(); |