--- truecrypt/boot/windows/bootconfig.cpp 2018/04/24 16:55:18 1.1.1.2 +++ truecrypt/boot/windows/bootconfig.cpp 2018/04/24 16:58:43 1.1.1.3 @@ -1,7 +1,7 @@ /* Copyright (c) 2008 TrueCrypt Foundation. All rights reserved. - Governed by the TrueCrypt License 2.5 the full text of which is contained + Governed by the TrueCrypt License 2.6 the full text of which is contained in the file License.txt included in TrueCrypt binary and source code distribution packages. */ @@ -13,7 +13,12 @@ byte BootSectorFlags; byte BootLoaderDrive; byte BootDrive; bool BootDriveGeometryValid = false; -bool PreventHiddenSystemBoot = false; +bool PreventNormalSystemBoot = false; +bool PreventBootMenu = false; +char CustomUserMessage[TC_BOOT_SECTOR_USER_MESSAGE_MAX_LENGTH + 1]; +uint16 OuterVolumeBackupHeaderCrc; + +bool BootStarted = false; DriveGeometry BootDriveGeometry; @@ -26,6 +31,38 @@ uint64 HiddenVolumeStartUnitNo; uint64 HiddenVolumeStartSector; +#ifndef TC_WINDOWS_BOOT_RESCUE_DISK_MODE + +void ReadBootSectorUserConfiguration () +{ + byte userConfig; + + AcquireSectorBuffer(); + + if (ReadWriteMBR (false, BootLoaderDrive, true) != BiosResultSuccess) + goto ret; + + userConfig = SectorBuffer[TC_BOOT_SECTOR_USER_CONFIG_OFFSET]; + PreventBootMenu = (userConfig & TC_BOOT_USER_CFG_FLAG_DISABLE_ESC); + + memcpy (CustomUserMessage, SectorBuffer + TC_BOOT_SECTOR_USER_MESSAGE_OFFSET, TC_BOOT_SECTOR_USER_MESSAGE_MAX_LENGTH); + CustomUserMessage[TC_BOOT_SECTOR_USER_MESSAGE_MAX_LENGTH] = 0; + + if (userConfig & TC_BOOT_USER_CFG_FLAG_SILENT_MODE) + { + if (CustomUserMessage[0]) + Print (CustomUserMessage); + + DisableScreenOutput(); + } + + OuterVolumeBackupHeaderCrc = *(uint16 *) (SectorBuffer + TC_BOOT_SECTOR_OUTER_VOLUME_BAK_HEADER_CRC_OFFSET); + +ret: + ReleaseSectorBuffer(); +} + + BiosResult UpdateBootSectorConfiguration (byte drive) { AcquireSectorBuffer(); @@ -41,3 +78,5 @@ ret: ReleaseSectorBuffer(); return result; } + +#endif // !TC_WINDOWS_BOOT_RESCUE_DISK_MODE