1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-11 11:08:02 -06:00

Windows: Avoid modifying BootArguments structure and use __unaligned keyword to inform compiler that pointer is unaligned.

This avoids issues with existing bootloaders
This commit is contained in:
Mounir IDRASSI
2024-11-16 01:50:06 +01:00
parent c86577fc0e
commit 9c9870b103
4 changed files with 4 additions and 5 deletions

View File

@@ -14,7 +14,6 @@
#define TC_HEADER_Boot_BootCommon #define TC_HEADER_Boot_BootCommon
#include "Common/Password.h" #include "Common/Password.h"
#include "Crypto/config.h"
#include "BootDefs.h" #include "BootDefs.h"
// The user will be advised to upgrade the rescue disk if upgrading from the following or any previous version // The user will be advised to upgrade the rescue disk if upgrading from the following or any previous version
@@ -59,7 +58,7 @@ typedef struct
uint16 CryptoInfoOffset; uint16 CryptoInfoOffset;
uint16 CryptoInfoLength; uint16 CryptoInfoLength;
uint32 HeaderSaltCrc32; uint32 HeaderSaltCrc32;
CRYPTOPP_ALIGN_DATA(8) PasswordLegacy BootPassword; PasswordLegacy BootPassword;
uint64 HiddenSystemPartitionStart; uint64 HiddenSystemPartitionStart;
uint64 DecoySystemPartitionStart; uint64 DecoySystemPartitionStart;
uint32 Flags; uint32 Flags;

View File

@@ -170,7 +170,7 @@ void AddPasswordToCache (Password *password, int pim, BOOL bCachePim)
burn (&tmpPass, sizeof (Password)); burn (&tmpPass, sizeof (Password));
} }
void AddLegacyPasswordToCache (PasswordLegacy *password, int pim) void AddLegacyPasswordToCache (__unaligned PasswordLegacy *password, int pim)
{ {
Password inputPass = {0}; Password inputPass = {0};
inputPass.Length = password->Length; inputPass.Length = password->Length;

View File

@@ -21,6 +21,6 @@
extern int cacheEmpty; extern int cacheEmpty;
void AddPasswordToCache (Password *password, int pim, BOOL bCachePim); void AddPasswordToCache (Password *password, int pim, BOOL bCachePim);
void AddLegacyPasswordToCache (PasswordLegacy *password, int pim); void AddLegacyPasswordToCache (__unaligned PasswordLegacy *password, int pim);
int ReadVolumeHeaderWCache (BOOL bBoot, BOOL bCache, BOOL bCachePim, unsigned char *header, Password *password, int pkcs5_prf, int pim, PCRYPTO_INFO *retInfo); int ReadVolumeHeaderWCache (BOOL bBoot, BOOL bCache, BOOL bCachePim, unsigned char *header, Password *password, int pkcs5_prf, int pim, PCRYPTO_INFO *retInfo);
void WipeCache (void); void WipeCache (void);

View File

@@ -411,7 +411,7 @@ static void ComputeBootLoaderFingerprint(PDEVICE_OBJECT LowerDeviceObject, uint8
} }
static NTSTATUS MountDrive (DriveFilterExtension *Extension, Password *password, uint32 *headerSaltCrc32) static NTSTATUS MountDrive (DriveFilterExtension *Extension, Password *password, __unaligned uint32 *headerSaltCrc32)
{ {
BOOL hiddenVolume = (BootArgs.HiddenSystemPartitionStart != 0); BOOL hiddenVolume = (BootArgs.HiddenSystemPartitionStart != 0);
int64 hiddenHeaderOffset = BootArgs.HiddenSystemPartitionStart + TC_HIDDEN_VOLUME_HEADER_OFFSET; int64 hiddenHeaderOffset = BootArgs.HiddenSystemPartitionStart + TC_HIDDEN_VOLUME_HEADER_OFFSET;