Skip to content

Commit 5eb358c

Browse files
Refactor: Use symbolic constants for volume header magic numbers (#1525)
Replaced hardcoded 0x56455241 ('VERA') with TC_HEADER_MAGIC for better readability and maintainability. Also replaced 0x5645524142455854 with TC_BOOT_DRIVE_FILTER_EXTENSION_MAGIC and added 'ULL' suffix for 64-bit safety.
1 parent 1f4f6d0 commit 5eb358c

6 files changed

Lines changed: 14 additions & 10 deletions

File tree

src/Common/BootEncryption.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4322,7 +4322,7 @@ namespace VeraCrypt
43224322

43234323
DecryptBuffer (RescueVolumeHeader + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
43244324

4325-
if (GetHeaderField32 (RescueVolumeHeader, TC_HEADER_OFFSET_MAGIC) != 0x56455241)
4325+
if (GetHeaderField32 (RescueVolumeHeader, TC_HEADER_OFFSET_MAGIC) != TC_HEADER_MAGIC_NUMBER)
43264326
throw ParameterIncorrect (SRC_POS);
43274327

43284328
uint8 *fieldPos = RescueVolumeHeader + TC_HEADER_OFFSET_ENCRYPTED_AREA_LENGTH;

src/Common/Volumes.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -457,8 +457,8 @@ KeyReady: ;
457457

458458
DecryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
459459

460-
// Magic 'VERA'
461-
if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != 0x56455241)
460+
// Magic number
461+
if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != TC_HEADER_MAGIC_NUMBER)
462462
continue;
463463

464464
// Header version
@@ -768,7 +768,7 @@ int ReadVolumeHeader (BOOL bBoot, unsigned char *header, Password *password, int
768768
DecryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
769769

770770
// Check magic 'VERA' and CRC-32 of header fields and master keydata
771-
if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != 0x56455241
771+
if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != TC_HEADER_MAGIC_NUMBER
772772
|| (GetHeaderField16 (header, TC_HEADER_OFFSET_VERSION) >= 4 && GetHeaderField32 (header, TC_HEADER_OFFSET_HEADER_CRC) != GetCrc32 (header + TC_HEADER_OFFSET_MAGIC, TC_HEADER_OFFSET_HEADER_CRC - TC_HEADER_OFFSET_MAGIC))
773773
|| GetHeaderField32 (header, TC_HEADER_OFFSET_KEY_AREA_CRC) != GetCrc32 (header + HEADER_MASTER_KEYDATA_OFFSET, MASTER_KEYDATA_SIZE))
774774
{
@@ -1040,8 +1040,8 @@ int CreateVolumeHeaderInMemory (HWND hwndDlg, BOOL bBoot, unsigned char *header,
10401040
// Salt
10411041
mputBytes (p, keyInfo.salt, PKCS5_SALT_SIZE);
10421042

1043-
// Magic
1044-
mputLong (p, 0x56455241);
1043+
// Magic number
1044+
mputLong (p, TC_HEADER_MAGIC_NUMBER);
10451045

10461046
// Header version
10471047
mputWord (p, VOLUME_HEADER_VERSION);

src/Common/Volumes.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ extern "C" {
2121
// Volume header version
2222
#define VOLUME_HEADER_VERSION 0x0005
2323

24+
// Volume header magic identifiers
25+
// 32-bit magic number identifying a valid VeraCrypt volume header ("VERA" in ASCII)
26+
#define TC_HEADER_MAGIC_NUMBER 0x56455241
27+
// 64-bit magic number identifier for boot drive filter extension ("VERABEXT" in ASCII)
28+
#define TC_BOOT_DRIVE_FILTER_EXTENSION_MAGIC_NUMBER 0x5645524142455854ULL
29+
2430
// Version number written to volume header during format;
2531
// specifies the minimum program version required to mount the volume
2632
#define TC_VOLUME_MIN_REQUIRED_PROGRAM_VERSION 0x010b

src/Driver/DriveFilter.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ static NTSTATUS SaveDriveVolumeHeader (DriveFilterExtension *Extension)
730730

731731
DecryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, pCryptoInfo);
732732

733-
if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != 0x56455241)
733+
if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != TC_HEADER_MAGIC_NUMBER)
734734
{
735735
Dump ("Header not decrypted");
736736
status = STATUS_UNKNOWN_REVISION;

src/Driver/DriveFilter.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ typedef struct _DriveFilterExtension
4949

5050
} DriveFilterExtension;
5151

52-
#define TC_BOOT_DRIVE_FILTER_EXTENSION_MAGIC_NUMBER 0x5645524142455854
53-
5452
extern BOOL BootArgsValid;
5553
extern BootArguments BootArgs;
5654
extern PKTHREAD EncryptionSetupThread;

src/Format/InPlace.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1870,7 +1870,7 @@ int FastVolumeHeaderUpdate (HANDLE dev, CRYPTO_INFO *headerCryptoInfo, CRYPTO_IN
18701870

18711871
DecryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, pCryptoInfo);
18721872

1873-
if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != 0x56455241)
1873+
if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != TC_HEADER_MAGIC_NUMBER)
18741874
{
18751875
nStatus = ERR_PARAMETER_INCORRECT;
18761876
goto closing_seq;

0 commit comments

Comments
 (0)