diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2018-08-08 19:31:25 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2018-08-10 01:31:31 +0200 |
commit | 1b59879411700450c5d14225ba9c6a509cfe0f8f (patch) | |
tree | 7a08c114a352bfce9a6d3212acad61d659f08964 | |
parent | 1d37997d3bbd019082a0b0531e9d269a518bde72 (diff) | |
download | VeraCrypt-1b59879411700450c5d14225ba9c6a509cfe0f8f.tar.gz VeraCrypt-1b59879411700450c5d14225ba9c6a509cfe0f8f.zip |
Linux/MacOSX/FreeBSD: When performing backup of volume header, automatically try to use embedded backup header if using the main header fails.
-rwxr-xr-x | src/Main/GraphicUserInterface.cpp | 37 | ||||
-rw-r--r-- | src/Main/TextUserInterface.cpp | 35 |
2 files changed, 70 insertions, 2 deletions
diff --git a/src/Main/GraphicUserInterface.cpp b/src/Main/GraphicUserInterface.cpp index ba283af4..99b2caad 100755 --- a/src/Main/GraphicUserInterface.cpp +++ b/src/Main/GraphicUserInterface.cpp @@ -208,7 +208,42 @@ namespace VeraCrypt } catch (PasswordException &e) { - ShowWarning (e); + bool bFailed = true; + if (!options->UseBackupHeaders) + { + try + { + OpenVolumeThreadRoutine routine2( + options->Path, + options->PreserveTimestamps, + options->Password, + options->Pim, + options->Kdf, + false, + options->Keyfiles, + options->Protection, + options->ProtectionPassword, + options->ProtectionPim, + options->ProtectionKdf, + options->ProtectionKeyfiles, + true, + volumeType, + true + ); + + ExecuteWaitThreadRoutine (parent, &routine2); + volume = routine2.m_pVolume; + bFailed = false; + } + catch (...) + { + } + } + + if (bFailed) + ShowWarning (e); + else + ShowWarning ("HEADER_DAMAGED_AUTO_USED_HEADER_BAK"); } } diff --git a/src/Main/TextUserInterface.cpp b/src/Main/TextUserInterface.cpp index 8cd010b3..61b8b8a6 100644 --- a/src/Main/TextUserInterface.cpp +++ b/src/Main/TextUserInterface.cpp @@ -317,7 +317,40 @@ namespace VeraCrypt } catch (PasswordException &e) { - ShowInfo (e); + bool bFailed = true; + if (!options->UseBackupHeaders) + { + try + { + volume = Core->OpenVolume ( + options->Path, + options->PreserveTimestamps, + options->Password, + options->Pim, + kdf, + false, + options->Keyfiles, + options->Protection, + options->ProtectionPassword, + options->ProtectionPim, + options->ProtectionKdf, + options->ProtectionKeyfiles, + true, + volumeType, + true + ); + + bFailed = false; + } + catch (...) + { + } + } + + if (bFailed) + ShowInfo (e); + else + ShowInfo ("HEADER_DAMAGED_AUTO_USED_HEADER_BAK"); } } |