diff options
author | Lukas Reschke <lukas@owncloud.com> | 2015-08-25 20:56:51 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2015-08-25 20:56:51 +0200 |
commit | e2bd026b2ed4aa0bebc20d3d9cc8defb0ce96a77 (patch) | |
tree | 5b5e2f2c744cb541dccea01320390c304d3154ca | |
parent | 840a2a7788a367b075ea4e07d7dc4adc4a4fa2ce (diff) | |
parent | 63218ec098655f9d7630b16394818746736d2f77 (diff) | |
download | nextcloud-server-e2bd026b2ed4aa0bebc20d3d9cc8defb0ce96a77.tar.gz nextcloud-server-e2bd026b2ed4aa0bebc20d3d9cc8defb0ce96a77.zip |
Merge pull request #18558 from owncloud/ext-objectstore
Prevent objectstore being set from client side
-rw-r--r-- | apps/files_external/controller/storagescontroller.php | 10 | ||||
-rw-r--r-- | apps/files_external/service/storagesservice.php | 8 |
2 files changed, 16 insertions, 2 deletions
diff --git a/apps/files_external/controller/storagescontroller.php b/apps/files_external/controller/storagescontroller.php index 3d91af8bd8f..613f22c0331 100644 --- a/apps/files_external/controller/storagescontroller.php +++ b/apps/files_external/controller/storagescontroller.php @@ -138,6 +138,16 @@ abstract class StoragesController extends Controller { ); } + if ($storage->getBackendOption('objectstore')) { + // objectstore must not be sent from client side + return new DataResponse( + array( + 'message' => (string)$this->l10n->t('Objectstore forbidden') + ), + Http::STATUS_UNPROCESSABLE_ENTITY + ); + } + /** @var Backend */ $backend = $storage->getBackend(); /** @var AuthMechanism */ diff --git a/apps/files_external/service/storagesservice.php b/apps/files_external/service/storagesservice.php index 3e2152741e5..947e544d88f 100644 --- a/apps/files_external/service/storagesservice.php +++ b/apps/files_external/service/storagesservice.php @@ -472,10 +472,14 @@ abstract class StoragesService { if (!isset($allStorages[$id])) { throw new NotFoundException('Storage with id "' . $id . '" not found'); } - $oldStorage = $allStorages[$id]; - $allStorages[$id] = $updatedStorage; + // ensure objectstore is persistent + if ($objectstore = $oldStorage->getBackendOption('objectstore')) { + $updatedStorage->setBackendOption('objectstore', $objectstore); + } + + $allStorages[$id] = $updatedStorage; $this->writeConfig($allStorages); $this->triggerChangeHooks($oldStorage, $updatedStorage); |