From 1fd212016e867850267eea44bc09c8df1aff8ca4 Mon Sep 17 00:00:00 2001 From: alt3r 3go Date: Sun, 1 Dec 2019 14:26:38 +0100 Subject: UNIX: make sector size mismatch error more verbose (#552) (#561) Signed-off-by: alt3r 3go --- src/Core/Unix/CoreUnix.cpp | 6 ++++-- src/Main/Forms/WaitDialog.cpp | 1 + src/Main/UserInterface.cpp | 2 ++ src/Platform/Exception.h | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Core/Unix/CoreUnix.cpp b/src/Core/Unix/CoreUnix.cpp index 372c450f..423b5655 100644 --- a/src/Core/Unix/CoreUnix.cpp +++ b/src/Core/Unix/CoreUnix.cpp @@ -473,8 +473,10 @@ namespace VeraCrypt if (options.Path->IsDevice()) { - if (volume->GetFile()->GetDeviceSectorSize() != volume->GetSectorSize()) - throw ParameterIncorrect (SRC_POS); + const uint32 devSectorSize = volume->GetFile()->GetDeviceSectorSize(); + const size_t volSectorSize = volume->GetSectorSize(); + if (devSectorSize != volSectorSize) + throw DeviceSectorSizeMismatch (SRC_POS, StringConverter::ToWide(devSectorSize) + L" != " + StringConverter::ToWide(volSectorSize)); } // Find a free mount point for FUSE service diff --git a/src/Main/Forms/WaitDialog.cpp b/src/Main/Forms/WaitDialog.cpp index 32555d3b..2976a6e8 100644 --- a/src/Main/Forms/WaitDialog.cpp +++ b/src/Main/Forms/WaitDialog.cpp @@ -45,6 +45,7 @@ namespace VeraCrypt VC_CONVERT_EXCEPTION (RootDeviceUnavailable); VC_CONVERT_EXCEPTION (DriveLetterUnavailable); VC_CONVERT_EXCEPTION (DriverError); + VC_CONVERT_EXCEPTION (DeviceSectorSizeMismatch); VC_CONVERT_EXCEPTION (EncryptedSystemRequired); VC_CONVERT_EXCEPTION (HigherFuseVersionRequired); VC_CONVERT_EXCEPTION (KernelCryptoServiceTestFailed); diff --git a/src/Main/UserInterface.cpp b/src/Main/UserInterface.cpp index c124d18a..35396b46 100644 --- a/src/Main/UserInterface.cpp +++ b/src/Main/UserInterface.cpp @@ -444,6 +444,7 @@ namespace VeraCrypt { #define EX2MSG(exception, message) do { if (ex == typeid (exception)) return (message); } while (false) EX2MSG (DriveLetterUnavailable, LangString["DRIVE_LETTER_UNAVAILABLE"]); + EX2MSG (DeviceSectorSizeMismatch, _("Storage device and VC volume sector size mismatch")); EX2MSG (EncryptedSystemRequired, _("This operation must be performed only when the system hosted on the volume is running.")); EX2MSG (ExternalException, LangString["EXCEPTION_OCCURRED"]); EX2MSG (InsufficientData, _("Not enough data available.")); @@ -1588,6 +1589,7 @@ namespace VeraCrypt VC_CONVERT_EXCEPTION (RootDeviceUnavailable); VC_CONVERT_EXCEPTION (DriveLetterUnavailable); VC_CONVERT_EXCEPTION (DriverError); + VC_CONVERT_EXCEPTION (DeviceSectorSizeMismatch); VC_CONVERT_EXCEPTION (EncryptedSystemRequired); VC_CONVERT_EXCEPTION (HigherFuseVersionRequired); VC_CONVERT_EXCEPTION (KernelCryptoServiceTestFailed); diff --git a/src/Platform/Exception.h b/src/Platform/Exception.h index 71cfa1c5..b0f04bba 100644 --- a/src/Platform/Exception.h +++ b/src/Platform/Exception.h @@ -82,6 +82,7 @@ namespace VeraCrypt TC_EXCEPTION_NODECL (ExecutedProcessFailed); \ TC_EXCEPTION (AlreadyInitialized); \ TC_EXCEPTION (AssertionFailed); \ + TC_EXCEPTION (DeviceSectorSizeMismatch); \ TC_EXCEPTION (ExternalException); \ TC_EXCEPTION (InsufficientData); \ TC_EXCEPTION (NotApplicable); \ -- cgit v1.2.3