VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2018-08-08 19:31:25 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2018-08-10 01:31:31 +0200
commit1b59879411700450c5d14225ba9c6a509cfe0f8f (patch)
tree7a08c114a352bfce9a6d3212acad61d659f08964 /src/Main
parent1d37997d3bbd019082a0b0531e9d269a518bde72 (diff)
downloadVeraCrypt-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.
Diffstat (limited to 'src/Main')
-rwxr-xr-xsrc/Main/GraphicUserInterface.cpp37
-rw-r--r--src/Main/TextUserInterface.cpp35
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");
}
}