VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main/UserInterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Main/UserInterface.cpp')
-rwxr-xr-xsrc/Main/UserInterface.cpp73
1 files changed, 72 insertions, 1 deletions
diff --git a/src/Main/UserInterface.cpp b/src/Main/UserInterface.cpp
index 4306dec2..73db03dc 100755
--- a/src/Main/UserInterface.cpp
+++ b/src/Main/UserInterface.cpp
@@ -17,6 +17,7 @@
#include "Platform/Unix/Process.h"
#endif
#include "Platform/SystemInfo.h"
+#include "Platform/SystemException.h"
#include "Common/SecurityToken.h"
#include "Volume/EncryptionTest.h"
#include "Application.h"
@@ -729,7 +730,8 @@ namespace VeraCrypt
try
{
- volume = Core->MountVolume (options);
+ volume = MountVolumeThread (options);
+
}
catch (VolumeHostInUse&)
{
@@ -1496,4 +1498,73 @@ namespace VeraCrypt
return L"?";
}
}
+
+ #define VC_CONVERT_EXCEPTION(NAME) if (dynamic_cast<NAME*> (ex)) throw (NAME&) *ex;
+
+ void UserInterface::ThrowException (Exception* ex)
+ {
+ VC_CONVERT_EXCEPTION (PasswordIncorrect);
+ VC_CONVERT_EXCEPTION (PasswordKeyfilesIncorrect);
+ VC_CONVERT_EXCEPTION (PasswordOrKeyboardLayoutIncorrect);
+ VC_CONVERT_EXCEPTION (PasswordOrMountOptionsIncorrect);
+ VC_CONVERT_EXCEPTION (ProtectionPasswordIncorrect);
+ VC_CONVERT_EXCEPTION (ProtectionPasswordKeyfilesIncorrect);
+ VC_CONVERT_EXCEPTION (PasswordEmpty);
+ VC_CONVERT_EXCEPTION (PasswordTooLong);
+ VC_CONVERT_EXCEPTION (UnportablePassword);
+ VC_CONVERT_EXCEPTION (ElevationFailed);
+ VC_CONVERT_EXCEPTION (RootDeviceUnavailable);
+ VC_CONVERT_EXCEPTION (DriveLetterUnavailable);
+ VC_CONVERT_EXCEPTION (DriverError);
+ VC_CONVERT_EXCEPTION (EncryptedSystemRequired);
+ VC_CONVERT_EXCEPTION (HigherFuseVersionRequired);
+ VC_CONVERT_EXCEPTION (KernelCryptoServiceTestFailed);
+ VC_CONVERT_EXCEPTION (LoopDeviceSetupFailed);
+ VC_CONVERT_EXCEPTION (MountPointRequired);
+ VC_CONVERT_EXCEPTION (MountPointUnavailable);
+ VC_CONVERT_EXCEPTION (NoDriveLetterAvailable);
+ VC_CONVERT_EXCEPTION (TemporaryDirectoryFailure);
+ VC_CONVERT_EXCEPTION (UnsupportedSectorSizeHiddenVolumeProtection);
+ VC_CONVERT_EXCEPTION (UnsupportedSectorSizeNoKernelCrypto);
+ VC_CONVERT_EXCEPTION (VolumeAlreadyMounted);
+ VC_CONVERT_EXCEPTION (VolumeSlotUnavailable);
+ VC_CONVERT_EXCEPTION (UserInterfaceException);
+ VC_CONVERT_EXCEPTION (MissingArgument);
+ VC_CONVERT_EXCEPTION (NoItemSelected);
+ VC_CONVERT_EXCEPTION (StringFormatterException);
+ VC_CONVERT_EXCEPTION (ExecutedProcessFailed);
+ VC_CONVERT_EXCEPTION (AlreadyInitialized);
+ VC_CONVERT_EXCEPTION (AssertionFailed);
+ VC_CONVERT_EXCEPTION (ExternalException);
+ VC_CONVERT_EXCEPTION (InsufficientData);
+ VC_CONVERT_EXCEPTION (NotApplicable);
+ VC_CONVERT_EXCEPTION (NotImplemented);
+ VC_CONVERT_EXCEPTION (NotInitialized);
+ VC_CONVERT_EXCEPTION (ParameterIncorrect);
+ VC_CONVERT_EXCEPTION (ParameterTooLarge);
+ VC_CONVERT_EXCEPTION (PartitionDeviceRequired);
+ VC_CONVERT_EXCEPTION (StringConversionFailed);
+ VC_CONVERT_EXCEPTION (TestFailed);
+ VC_CONVERT_EXCEPTION (TimeOut);
+ VC_CONVERT_EXCEPTION (UnknownException);
+ VC_CONVERT_EXCEPTION (UserAbort)
+ VC_CONVERT_EXCEPTION (CipherInitError);
+ VC_CONVERT_EXCEPTION (WeakKeyDetected);
+ VC_CONVERT_EXCEPTION (HigherVersionRequired);
+ VC_CONVERT_EXCEPTION (KeyfilePathEmpty);
+ VC_CONVERT_EXCEPTION (MissingVolumeData);
+ VC_CONVERT_EXCEPTION (MountedVolumeInUse);
+ VC_CONVERT_EXCEPTION (UnsupportedSectorSize);
+ VC_CONVERT_EXCEPTION (VolumeEncryptionNotCompleted);
+ VC_CONVERT_EXCEPTION (VolumeHostInUse);
+ VC_CONVERT_EXCEPTION (VolumeProtected);
+ VC_CONVERT_EXCEPTION (VolumeReadOnly);
+ VC_CONVERT_EXCEPTION (Pkcs11Exception);
+ VC_CONVERT_EXCEPTION (InvalidSecurityTokenKeyfilePath);
+ VC_CONVERT_EXCEPTION (SecurityTokenLibraryNotInitialized);
+ VC_CONVERT_EXCEPTION (SecurityTokenKeyfileAlreadyExists);
+ VC_CONVERT_EXCEPTION (SecurityTokenKeyfileNotFound);
+ VC_CONVERT_EXCEPTION (SystemException);
+ throw *ex;
+ }
}