From aebb8c3639041dbbabd0825403675c053042f90b Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 18 Jan 2017 17:42:07 +0100 Subject: [PATCH] Ignore exception when deleting keys of deleted user Whenever a user was deleted for encryption where the keys are stored in the home, we can ignore user existence exceptions because it means the keys are already gone. Signed-off-by: Morris Jobke --- lib/private/Encryption/Keys/Storage.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/private/Encryption/Keys/Storage.php b/lib/private/Encryption/Keys/Storage.php index e8d152581f..a4c3a26d7b 100644 --- a/lib/private/Encryption/Keys/Storage.php +++ b/lib/private/Encryption/Keys/Storage.php @@ -28,6 +28,7 @@ use OC\Encryption\Util; use OC\Files\Filesystem; use OC\Files\View; use OCP\Encryption\Keys\IStorage; +use OC\User\NoUserException; class Storage implements IStorage { @@ -134,8 +135,21 @@ class Storage implements IStorage { * @inheritdoc */ public function deleteUserKey($uid, $keyId, $encryptionModuleId) { - $path = $this->constructUserKeyPath($encryptionModuleId, $keyId, $uid); - return !$this->view->file_exists($path) || $this->view->unlink($path); + try { + $path = $this->constructUserKeyPath($encryptionModuleId, $keyId, $uid); + return !$this->view->file_exists($path) || $this->view->unlink($path); + } catch (NoUserException $e) { + // this exception can come from initMountPoints() from setupUserMounts() + // for a deleted user. + // + // It means, that: + // - we are not running in alternative storage mode because we don't call + // initMountPoints() in that mode + // - the keys were in the user's home but since the user was deleted, the + // user's home is gone and so are the keys + // + // So there is nothing to do, just ignore. + } } /**