From 9e6552a20dd71b92d08e3b588a174fa85db60d5f Mon Sep 17 00:00:00 2001 From: segfault Date: Fri, 3 May 2024 13:50:58 +0200 Subject: [PATCH] automountManager: Fix password not re-asked for TCRYPT devices Since commit https://gitlab.com/cryptsetup/cryptsetup/-/commit/f881092bbc92c79b3217d5e14e96f773f2460035 released in cryptsetup 2.5.0, cryptsetup returns EPERM instead of EINVAL when the TCRYPT header can't be decrypted with the provided password and parameters. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7631 Part-of: --- js/ui/components/automountManager.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/js/ui/components/automountManager.js b/js/ui/components/automountManager.js index 899c6a0d8..4eee7c9d7 100644 --- a/js/ui/components/automountManager.js +++ b/js/ui/components/automountManager.js @@ -199,8 +199,11 @@ class AutomountManager { e.message.includes('No key available to unlock device') || // udisks (no password) // libblockdev wrong password opening LUKS device e.message.includes('Failed to activate device: Incorrect passphrase') || - // cryptsetup returns EINVAL in many cases, including wrong TCRYPT password/parameters - e.message.includes('Failed to load device\'s parameters: Invalid argument')) { + // cryptsetup returns EINVAL (< v2.5.0) or EPERM (>= v2.5.0) + // when the TCRYPT header can't be decrypted with the provided + // password/parameters. + e.message.includes('Failed to load device\'s parameters: Invalid argument') || + e.message.includes('Failed to load device\'s parameters: Operation not permitted')) { this._reaskPassword(volume); } else { if (e.message.includes('Compiled against a version of libcryptsetup that does not support the VeraCrypt PIM setting')) {