mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-12 11:28:26 -06:00
Remove trailing whitespace
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
:: Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
:: by the TrueCrypt License 3.0.
|
||||
::
|
||||
:: Modifications and additions to the original source code (contained in this file)
|
||||
:: Modifications and additions to the original source code (contained in this file)
|
||||
:: and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
:: and are governed by the Apache License 2.0 the full text of which is
|
||||
:: contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -128,7 +128,7 @@ pushd .
|
||||
set BUILD_ALT_DIR=%TC_BUILD_ALT_DIR%
|
||||
|
||||
build %TC_BUILD_OPTS% -w -nmake /S -nmake /C 2>build_errors.log 1>&2
|
||||
|
||||
|
||||
if errorlevel 1 (
|
||||
type build_errors.log
|
||||
type build_errors_asm.log 2>NUL:
|
||||
@@ -138,7 +138,7 @@ pushd .
|
||||
)
|
||||
|
||||
shift
|
||||
|
||||
|
||||
goto build_dirs
|
||||
:done
|
||||
popd
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -167,7 +167,7 @@ NTSTATUS DriveFilterAddDevice (PDRIVER_OBJECT driverObject, PDEVICE_OBJECT pdo)
|
||||
Extension = (DriveFilterExtension *) filterDeviceObject->DeviceExtension;
|
||||
memset (Extension, 0, sizeof (DriveFilterExtension));
|
||||
|
||||
status = IoAttachDeviceToDeviceStackSafe (filterDeviceObject, pdo, &(Extension->LowerDeviceObject));
|
||||
status = IoAttachDeviceToDeviceStackSafe (filterDeviceObject, pdo, &(Extension->LowerDeviceObject));
|
||||
if (!NT_SUCCESS (status))
|
||||
{
|
||||
goto err;
|
||||
@@ -182,7 +182,7 @@ NTSTATUS DriveFilterAddDevice (PDRIVER_OBJECT driverObject, PDEVICE_OBJECT pdo)
|
||||
Extension->IsDriveFilterDevice = Extension->Queue.IsFilterDevice = TRUE;
|
||||
Extension->DeviceObject = Extension->Queue.DeviceObject = filterDeviceObject;
|
||||
Extension->Pdo = pdo;
|
||||
|
||||
|
||||
Extension->Queue.LowerDeviceObject = Extension->LowerDeviceObject;
|
||||
IoInitializeRemoveLock (&Extension->Queue.RemoveLock, 'LRCV', 0, 0);
|
||||
|
||||
@@ -215,7 +215,7 @@ static void DismountDrive (DriveFilterExtension *Extension, BOOL stopIoQueue)
|
||||
{
|
||||
Dump ("Dismounting drive\n");
|
||||
ASSERT (Extension->DriveMounted);
|
||||
|
||||
|
||||
if (stopIoQueue && EncryptedIoQueueIsRunning (&Extension->Queue))
|
||||
EncryptedIoQueueStop (&Extension->Queue);
|
||||
|
||||
@@ -249,7 +249,7 @@ static void ComputeBootLoaderFingerprint(PDEVICE_OBJECT LowerDeviceObject, byte*
|
||||
// TC_BOOT_SECTOR_USER_CONFIG_OFFSET = 438
|
||||
//
|
||||
// we have: TC_BOOT_SECTOR_USER_MESSAGE_OFFSET = TC_BOOT_SECTOR_OUTER_VOLUME_BAK_HEADER_CRC_OFFSET + TC_BOOT_SECTOR_OUTER_VOLUME_BAK_HEADER_CRC_SIZE
|
||||
|
||||
|
||||
WHIRLPOOL_init (&whirlpool);
|
||||
sha512_begin (&sha2);
|
||||
// read the first 512 bytes
|
||||
@@ -362,8 +362,8 @@ static NTSTATUS MountDrive (DriveFilterExtension *Extension, Password *password,
|
||||
|
||||
if (BootArgs.CryptoInfoLength > 0)
|
||||
{
|
||||
PHYSICAL_ADDRESS cryptoInfoAddress;
|
||||
|
||||
PHYSICAL_ADDRESS cryptoInfoAddress;
|
||||
|
||||
cryptoInfoAddress.QuadPart = (BootLoaderSegment << 4) + BootArgs.CryptoInfoOffset;
|
||||
#ifdef DEBUG
|
||||
Dump ("Wiping memory %x %d\n", cryptoInfoAddress.LowPart, BootArgs.CryptoInfoLength);
|
||||
@@ -389,20 +389,20 @@ static NTSTATUS MountDrive (DriveFilterExtension *Extension, Password *password,
|
||||
|
||||
// calculate Fingerprint
|
||||
ComputeBootLoaderFingerprint (Extension->LowerDeviceObject, header);
|
||||
|
||||
|
||||
if (Extension->Queue.CryptoInfo->hiddenVolume)
|
||||
{
|
||||
int64 hiddenPartitionOffset = BootArgs.HiddenSystemPartitionStart;
|
||||
Dump ("Hidden volume start offset = %I64d\n", Extension->Queue.CryptoInfo->EncryptedAreaStart.Value + hiddenPartitionOffset);
|
||||
|
||||
|
||||
Extension->HiddenSystem = TRUE;
|
||||
|
||||
Extension->Queue.RemapEncryptedArea = TRUE;
|
||||
Extension->Queue.RemappedAreaOffset = hiddenPartitionOffset + Extension->Queue.CryptoInfo->EncryptedAreaStart.Value - BootArgs.DecoySystemPartitionStart;
|
||||
Extension->Queue.RemappedAreaDataUnitOffset = Extension->Queue.CryptoInfo->EncryptedAreaStart.Value / ENCRYPTION_DATA_UNIT_SIZE - BootArgs.DecoySystemPartitionStart / ENCRYPTION_DATA_UNIT_SIZE;
|
||||
|
||||
|
||||
Extension->Queue.CryptoInfo->EncryptedAreaStart.Value = BootArgs.DecoySystemPartitionStart;
|
||||
|
||||
|
||||
if (Extension->Queue.CryptoInfo->VolumeSize.Value > hiddenPartitionOffset - BootArgs.DecoySystemPartitionStart)
|
||||
TC_THROW_FATAL_EXCEPTION;
|
||||
|
||||
@@ -461,7 +461,7 @@ static NTSTATUS MountDrive (DriveFilterExtension *Extension, Password *password,
|
||||
}
|
||||
|
||||
status = SendDeviceIoControlRequest (Extension->LowerDeviceObject, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, &BootDriveLength, sizeof (BootDriveLength));
|
||||
|
||||
|
||||
if (!NT_SUCCESS (status))
|
||||
{
|
||||
Dump ("Failed to get drive length - error %x\n", status);
|
||||
@@ -470,7 +470,7 @@ static NTSTATUS MountDrive (DriveFilterExtension *Extension, Password *password,
|
||||
}
|
||||
else
|
||||
Extension->Queue.MaxReadAheadOffset = BootDriveLength;
|
||||
|
||||
|
||||
status = EncryptedIoQueueStart (&Extension->Queue);
|
||||
if (!NT_SUCCESS (status))
|
||||
TC_BUG_CHECK (status);
|
||||
@@ -526,7 +526,7 @@ static NTSTATUS SaveDriveVolumeHeader (DriveFilterExtension *Extension)
|
||||
|
||||
Dump ("Saving: ConfiguredEncryptedAreaStart=%I64d (%I64d) ConfiguredEncryptedAreaEnd=%I64d (%I64d)\n", Extension->ConfiguredEncryptedAreaStart / 1024 / 1024, Extension->ConfiguredEncryptedAreaStart, Extension->ConfiguredEncryptedAreaEnd / 1024 / 1024, Extension->ConfiguredEncryptedAreaEnd);
|
||||
Dump ("Saving: EncryptedAreaStart=%I64d (%I64d) EncryptedAreaEnd=%I64d (%I64d)\n", Extension->Queue.EncryptedAreaStart / 1024 / 1024, Extension->Queue.EncryptedAreaStart, Extension->Queue.EncryptedAreaEnd / 1024 / 1024, Extension->Queue.EncryptedAreaEnd);
|
||||
|
||||
|
||||
if (Extension->Queue.EncryptedAreaStart == -1 || Extension->Queue.EncryptedAreaEnd == -1
|
||||
|| Extension->Queue.EncryptedAreaEnd <= Extension->Queue.EncryptedAreaStart)
|
||||
{
|
||||
@@ -678,7 +678,7 @@ static NTSTATUS OnStartDeviceCompleted (PDEVICE_OBJECT filterDeviceObject, PIRP
|
||||
}
|
||||
|
||||
KeInitializeEvent (&Extension->MountWorkItemCompletedEvent, SynchronizationEvent, FALSE);
|
||||
IoQueueWorkItem (workItem, MountDriveWorkItemRoutine, DelayedWorkQueue, Extension);
|
||||
IoQueueWorkItem (workItem, MountDriveWorkItemRoutine, DelayedWorkQueue, Extension);
|
||||
|
||||
KeWaitForSingleObject (&Extension->MountWorkItemCompletedEvent, Executive, KernelMode, FALSE, NULL);
|
||||
IoFreeWorkItem (workItem);
|
||||
@@ -817,7 +817,7 @@ NTSTATUS DriveFilterDispatchIrp (PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||
if (Extension->BootDrive)
|
||||
{
|
||||
status = EncryptedIoQueueAddIrp (&Extension->Queue, Irp);
|
||||
|
||||
|
||||
if (status != STATUS_PENDING)
|
||||
TCCompleteDiskIrp (Irp, status, 0);
|
||||
|
||||
@@ -895,7 +895,7 @@ void ReopenBootVolumeHeader (PIRP irp, PIO_STACK_LOCATION irpSp)
|
||||
{
|
||||
Dump ("Header reopened\n");
|
||||
ComputeBootLoaderFingerprint (BootDriveFilterExtension->LowerDeviceObject, header);
|
||||
|
||||
|
||||
BootDriveFilterExtension->Queue.CryptoInfo->header_creation_time = BootDriveFilterExtension->HeaderCryptoInfo->header_creation_time;
|
||||
BootDriveFilterExtension->Queue.CryptoInfo->pkcs5 = BootDriveFilterExtension->HeaderCryptoInfo->pkcs5;
|
||||
BootDriveFilterExtension->Queue.CryptoInfo->noIterations = BootDriveFilterExtension->HeaderCryptoInfo->noIterations;
|
||||
@@ -1025,7 +1025,7 @@ static NTSTATUS HiberDriverWriteFunctionFilter (int filterNumber, PLARGE_INTEGER
|
||||
|
||||
if (writeB)
|
||||
return (*OriginalHiberDriverWriteFunctionsB[filterNumber]) (writeOffset, encryptedDataMdl);
|
||||
|
||||
|
||||
return (*OriginalHiberDriverWriteFunctionsA[filterNumber]) (arg0WriteA, writeOffset, encryptedDataMdl, arg3WriteA);
|
||||
}
|
||||
|
||||
@@ -1269,11 +1269,11 @@ static VOID SetupThreadProc (PVOID threadArg)
|
||||
byte *wipeBuffer = NULL;
|
||||
byte wipeRandChars[TC_WIPE_RAND_CHAR_COUNT];
|
||||
byte wipeRandCharsUpdate[TC_WIPE_RAND_CHAR_COUNT];
|
||||
|
||||
|
||||
KIRQL irql;
|
||||
NTSTATUS status;
|
||||
|
||||
// generate real random values for wipeRandChars and
|
||||
// generate real random values for wipeRandChars and
|
||||
// wipeRandCharsUpdate instead of relying on uninitialized stack memory
|
||||
LARGE_INTEGER iSeed;
|
||||
KeQuerySystemTime( &iSeed );
|
||||
@@ -1300,7 +1300,7 @@ static VOID SetupThreadProc (PVOID threadArg)
|
||||
burn (digest, SHA512_DIGESTSIZE);
|
||||
burn (&tctx, sizeof (tctx));
|
||||
}
|
||||
|
||||
|
||||
burn (&iSeed, sizeof(iSeed));
|
||||
|
||||
SetupResult = STATUS_UNSUCCESSFUL;
|
||||
@@ -1376,7 +1376,7 @@ static VOID SetupThreadProc (PVOID threadArg)
|
||||
}
|
||||
|
||||
EncryptedIoQueueResumeFromHold (&Extension->Queue);
|
||||
|
||||
|
||||
Dump ("EncryptedAreaStart=%I64d\n", Extension->Queue.EncryptedAreaStart);
|
||||
Dump ("EncryptedAreaEnd=%I64d\n", Extension->Queue.EncryptedAreaEnd);
|
||||
Dump ("ConfiguredEncryptedAreaStart=%I64d\n", Extension->ConfiguredEncryptedAreaStart);
|
||||
@@ -1485,7 +1485,7 @@ static VOID SetupThreadProc (PVOID threadArg)
|
||||
}
|
||||
|
||||
EncryptDataUnits (wipeBuffer, &dataUnit, setupBlockSize / ENCRYPTION_DATA_UNIT_SIZE, Extension->Queue.CryptoInfo);
|
||||
memcpy (wipeRandCharsUpdate, wipeBuffer, sizeof (wipeRandCharsUpdate));
|
||||
memcpy (wipeRandCharsUpdate, wipeBuffer, sizeof (wipeRandCharsUpdate));
|
||||
}
|
||||
|
||||
status = TCWriteDevice (BootDriveFilterExtension->LowerDeviceObject, wipeBuffer, offset, setupBlockSize);
|
||||
@@ -1500,7 +1500,7 @@ static VOID SetupThreadProc (PVOID threadArg)
|
||||
}
|
||||
}
|
||||
|
||||
memcpy (wipeRandChars, wipeRandCharsUpdate, sizeof (wipeRandCharsUpdate));
|
||||
memcpy (wipeRandChars, wipeRandCharsUpdate, sizeof (wipeRandCharsUpdate));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1646,7 +1646,7 @@ NTSTATUS StartBootEncryptionSetup (PDEVICE_OBJECT DeviceObject, PIRP irp, PIO_ST
|
||||
|
||||
SetupInProgress = TRUE;
|
||||
status = TCStartThread (SetupThreadProc, DeviceObject, &EncryptionSetupThread);
|
||||
|
||||
|
||||
if (!NT_SUCCESS (status))
|
||||
SetupInProgress = FALSE;
|
||||
|
||||
@@ -1742,7 +1742,7 @@ void GetBootEncryptionStatus (PIRP irp, PIO_STACK_LOCATION irpSp)
|
||||
bootEncStatus->HiddenSysLeakProtectionCount = HiddenSysLeakProtectionCount;
|
||||
|
||||
bootEncStatus->HiddenSystem = Extension->HiddenSystem;
|
||||
|
||||
|
||||
if (Extension->HiddenSystem)
|
||||
bootEncStatus->HiddenSystemPartitionStart = BootArgs.HiddenSystemPartitionStart;
|
||||
}
|
||||
@@ -1778,7 +1778,7 @@ void GetBootLoaderFingerprint (PIRP irp, PIO_STACK_LOCATION irpSp)
|
||||
irp->IoStatus.Information = 0;
|
||||
if (BootArgsValid && BootDriveFound && BootDriveFilterExtension && BootDriveFilterExtension->DriveMounted && BootDriveFilterExtension->HeaderCryptoInfo)
|
||||
{
|
||||
BootLoaderFingerprintRequest *bootLoaderFingerprint = (BootLoaderFingerprintRequest *) irp->AssociatedIrp.SystemBuffer;
|
||||
BootLoaderFingerprintRequest *bootLoaderFingerprint = (BootLoaderFingerprintRequest *) irp->AssociatedIrp.SystemBuffer;
|
||||
|
||||
/* compute the fingerprint again and check if it is the same as the one retrieved during boot */
|
||||
char *header = TCalloc (TC_BOOT_ENCRYPTION_VOLUME_HEADER_SIZE);
|
||||
@@ -1808,7 +1808,7 @@ void GetBootLoaderFingerprint (PIRP irp, PIO_STACK_LOCATION irpSp)
|
||||
}
|
||||
else
|
||||
{
|
||||
irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
|
||||
irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1919,7 +1919,7 @@ static VOID DecoySystemWipeThreadProc (PVOID threadArg)
|
||||
DecoySystemWipeResult = STATUS_INSUFFICIENT_RESOURCES;
|
||||
goto ret;
|
||||
}
|
||||
|
||||
|
||||
wipeRandBuffer = TCalloc (TC_ENCRYPTION_SETUP_IO_BLOCK_SIZE);
|
||||
if (!wipeRandBuffer)
|
||||
{
|
||||
@@ -1944,7 +1944,7 @@ static VOID DecoySystemWipeThreadProc (PVOID threadArg)
|
||||
}
|
||||
|
||||
memcpy (wipeCryptoInfo->k2, WipeDecoyRequest.WipeKey + EAGetKeySize (ea), EAGetKeySize (ea));
|
||||
|
||||
|
||||
if (!EAInitMode (wipeCryptoInfo))
|
||||
{
|
||||
DecoySystemWipeResult = STATUS_INVALID_PARAMETER;
|
||||
@@ -1957,7 +1957,7 @@ static VOID DecoySystemWipeThreadProc (PVOID threadArg)
|
||||
burn (WipeDecoyRequest.WipeKey, sizeof (WipeDecoyRequest.WipeKey));
|
||||
|
||||
offset.QuadPart = Extension->ConfiguredEncryptedAreaStart;
|
||||
|
||||
|
||||
Dump ("Wiping decoy system: start offset = %I64d\n", offset.QuadPart);
|
||||
|
||||
while (!DecoySystemWipeThreadAbortRequested)
|
||||
@@ -2061,7 +2061,7 @@ NTSTATUS StartDecoySystemWipe (PDEVICE_OBJECT DeviceObject, PIRP irp, PIO_STACK_
|
||||
|
||||
DecoySystemWipeInProgress = TRUE;
|
||||
status = TCStartThread (DecoySystemWipeThreadProc, DeviceObject, &DecoySystemWipeThread);
|
||||
|
||||
|
||||
if (!NT_SUCCESS (status))
|
||||
DecoySystemWipeInProgress = FALSE;
|
||||
|
||||
@@ -2100,7 +2100,7 @@ void GetDecoySystemWipeStatus (PIRP irp, PIO_STACK_LOCATION irpSp)
|
||||
}
|
||||
else
|
||||
wipeStatus->WipedAreaEnd = DecoySystemWipedAreaEnd;
|
||||
|
||||
|
||||
irp->IoStatus.Information = sizeof (DecoySystemWipeStatus);
|
||||
irp->IoStatus.Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
|
||||
@@ -65,18 +65,18 @@ END
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -112,7 +112,7 @@ static void ReleasePoolBuffer (EncryptedIoQueue *queue, void *address)
|
||||
{
|
||||
EncryptedIoQueueBuffer *buffer;
|
||||
AcquireBufferPoolMutex (queue);
|
||||
|
||||
|
||||
for (buffer = queue->FirstPoolBuffer; buffer != NULL; buffer = buffer->NextBuffer)
|
||||
{
|
||||
if (buffer->Address == address)
|
||||
@@ -329,7 +329,7 @@ static VOID IoThreadProc (PVOID threadArg)
|
||||
{
|
||||
InterlockedDecrement (&queue->IoThreadPendingRequestCount);
|
||||
request = CONTAINING_RECORD (listEntry, EncryptedIoRequest, ListEntry);
|
||||
|
||||
|
||||
#ifdef TC_TRACE_IO_QUEUE
|
||||
Dump ("%c %I64d [%I64d] roff=%I64d rlen=%d\n", request->Item->Write ? 'W' : 'R', request->Item->OriginalIrpOffset.QuadPart, GetElapsedTime (&queue->LastPerformanceCounter), request->Offset.QuadPart, request->Length);
|
||||
#endif
|
||||
@@ -512,7 +512,7 @@ static VOID MainThreadProc (PVOID threadArg)
|
||||
{
|
||||
PIRP irp = CONTAINING_RECORD (listEntry, IRP, Tail.Overlay.ListEntry);
|
||||
PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLocation (irp);
|
||||
|
||||
|
||||
if (queue->Suspended)
|
||||
KeWaitForSingleObject (&queue->QueueResumedEvent, Executive, KernelMode, FALSE, NULL);
|
||||
|
||||
@@ -622,7 +622,7 @@ static VOID MainThreadProc (PVOID threadArg)
|
||||
if (item->OriginalLength == 0
|
||||
|| (item->OriginalLength & (ENCRYPTION_DATA_UNIT_SIZE - 1)) != 0
|
||||
|| (item->OriginalOffset.QuadPart & (ENCRYPTION_DATA_UNIT_SIZE - 1)) != 0
|
||||
|| ( !queue->IsFilterDevice &&
|
||||
|| ( !queue->IsFilterDevice &&
|
||||
( (S_OK != ULongLongAdd(item->OriginalOffset.QuadPart, item->OriginalLength, &addResult))
|
||||
|| (addResult > (ULONGLONG) queue->VirtualDeviceLength)
|
||||
)
|
||||
@@ -643,7 +643,7 @@ static VOID MainThreadProc (PVOID threadArg)
|
||||
if (queue->CryptoInfo->hiddenVolume)
|
||||
hResult = ULongLongAdd(item->OriginalOffset.QuadPart, queue->CryptoInfo->hiddenVolumeOffset, &addResult);
|
||||
else
|
||||
hResult = ULongLongAdd(item->OriginalOffset.QuadPart, queue->CryptoInfo->volDataAreaOffset, &addResult);
|
||||
hResult = ULongLongAdd(item->OriginalOffset.QuadPart, queue->CryptoInfo->volDataAreaOffset, &addResult);
|
||||
|
||||
if (hResult != S_OK)
|
||||
{
|
||||
@@ -658,7 +658,7 @@ static VOID MainThreadProc (PVOID threadArg)
|
||||
{
|
||||
// If there has already been a write operation denied in order to protect the
|
||||
// hidden volume (since the volume mount time)
|
||||
if (queue->CryptoInfo->bHiddenVolProtectionAction)
|
||||
if (queue->CryptoInfo->bHiddenVolProtectionAction)
|
||||
{
|
||||
// Do not allow writing to this volume anymore. This is to fake a complete volume
|
||||
// or system failure (otherwise certain kinds of inconsistency within the file
|
||||
@@ -715,7 +715,7 @@ static VOID MainThreadProc (PVOID threadArg)
|
||||
while (dataRemaining > 0)
|
||||
{
|
||||
BOOL isLastFragment = dataRemaining <= TC_ENC_IO_QUEUE_MAX_FRAGMENT_SIZE;
|
||||
|
||||
|
||||
ULONG dataFragmentLength = isLastFragment ? dataRemaining : TC_ENC_IO_QUEUE_MAX_FRAGMENT_SIZE;
|
||||
activeFragmentBuffer = (activeFragmentBuffer == queue->FragmentBufferA ? queue->FragmentBufferB : queue->FragmentBufferA);
|
||||
|
||||
@@ -774,7 +774,7 @@ static VOID MainThreadProc (PVOID threadArg)
|
||||
dataUnit.Value += queue->CryptoInfo->FirstDataUnitNo.Value;
|
||||
else if (queue->RemapEncryptedArea)
|
||||
dataUnit.Value += queue->RemappedAreaDataUnitOffset;
|
||||
|
||||
|
||||
EncryptDataUnits (activeFragmentBuffer + request->EncryptedOffset, &dataUnit, request->EncryptedLength / ENCRYPTION_DATA_UNIT_SIZE, queue->CryptoInfo);
|
||||
}
|
||||
}
|
||||
@@ -824,7 +824,7 @@ NTSTATUS EncryptedIoQueueAddIrp (EncryptedIoQueue *queue, PIRP irp)
|
||||
|
||||
ExInterlockedInsertTailList (&queue->MainThreadQueue, &irp->Tail.Overlay.ListEntry, &queue->MainThreadQueueLock);
|
||||
KeSetEvent (&queue->MainThreadQueueNotEmptyEvent, IO_DISK_INCREMENT, FALSE);
|
||||
|
||||
|
||||
return STATUS_PENDING;
|
||||
|
||||
err:
|
||||
@@ -839,7 +839,7 @@ NTSTATUS EncryptedIoQueueHoldWhenIdle (EncryptedIoQueue *queue, int64 timeout)
|
||||
ASSERT (!queue->Suspended);
|
||||
|
||||
queue->SuspendPending = TRUE;
|
||||
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
while (InterlockedExchangeAdd (&queue->OutstandingIoCount, 0) > 0)
|
||||
@@ -898,7 +898,7 @@ BOOL EncryptedIoQueueIsRunning (EncryptedIoQueue *queue)
|
||||
NTSTATUS EncryptedIoQueueResumeFromHold (EncryptedIoQueue *queue)
|
||||
{
|
||||
ASSERT (queue->Suspended);
|
||||
|
||||
|
||||
queue->Suspended = FALSE;
|
||||
KeSetEvent (&queue->QueueResumedEvent, IO_DISK_INCREMENT, FALSE);
|
||||
|
||||
@@ -1024,7 +1024,7 @@ NTSTATUS EncryptedIoQueueStop (EncryptedIoQueue *queue)
|
||||
{
|
||||
ASSERT (!queue->StopPending);
|
||||
queue->StopPending = TRUE;
|
||||
|
||||
|
||||
while (InterlockedExchangeAdd (&queue->OutstandingIoCount, 0) > 0)
|
||||
{
|
||||
KeWaitForSingleObject (&queue->NoOutstandingIoEvent, Executive, KernelMode, FALSE, NULL);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -40,12 +40,12 @@ typedef struct EncryptedIoQueueBufferStruct
|
||||
typedef struct
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
|
||||
|
||||
KMUTEX BufferPoolMutex;
|
||||
EncryptedIoQueueBuffer *FirstPoolBuffer;
|
||||
|
||||
CRYPTO_INFO *CryptoInfo;
|
||||
|
||||
|
||||
// File-handle-based IO
|
||||
HANDLE HostFileHandle;
|
||||
int64 VirtualDeviceLength;
|
||||
@@ -106,7 +106,7 @@ typedef struct
|
||||
|
||||
volatile BOOL StartPending;
|
||||
volatile BOOL ThreadExitRequested;
|
||||
|
||||
|
||||
volatile BOOL Suspended;
|
||||
volatile BOOL SuspendPending;
|
||||
volatile BOOL StopPending;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
# by the TrueCrypt License 3.0.
|
||||
#
|
||||
# Modifications and additions to the original source code (contained in this file)
|
||||
# Modifications and additions to the original source code (contained in this file)
|
||||
# and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
# and are governed by the Apache License 2.0 the full text of which is
|
||||
# contained in the file License.txt included in VeraCrypt binary and source
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -320,7 +320,7 @@ namespace VeraCrypt
|
||||
{
|
||||
return fuse_get_context()->uid == 0 || fuse_get_context()->uid == UserId;
|
||||
}
|
||||
|
||||
|
||||
void FuseService::CloseMountedVolume ()
|
||||
{
|
||||
if (MountedVolume)
|
||||
@@ -403,7 +403,7 @@ namespace VeraCrypt
|
||||
|
||||
return outBuf;
|
||||
}
|
||||
|
||||
|
||||
const char *FuseService::GetVolumeImagePath ()
|
||||
{
|
||||
#ifdef TC_MACOSX
|
||||
@@ -439,7 +439,7 @@ namespace VeraCrypt
|
||||
args.push_back ("-o");
|
||||
args.push_back ("allow_other");
|
||||
}
|
||||
|
||||
|
||||
ExecFunctor execFunctor (openVolume, slotNumber);
|
||||
Process::Execute ("fuse", args, -1, &execFunctor);
|
||||
|
||||
@@ -498,13 +498,13 @@ namespace VeraCrypt
|
||||
|
||||
MountedVolume->WriteSectors (buffer, byteOffset);
|
||||
}
|
||||
|
||||
|
||||
void FuseService::OnSignal (int signal)
|
||||
{
|
||||
try
|
||||
{
|
||||
shared_ptr <VolumeInfo> volume = Core->GetMountedVolume (SlotNumber);
|
||||
|
||||
|
||||
if (volume)
|
||||
Core->DismountVolume (volume, true);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/*
|
||||
Legal Notice: Some portions of the source code contained in this file were
|
||||
derived from the source code of TrueCrypt 7.1a, which is
|
||||
Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
|
||||
derived from the source code of TrueCrypt 7.1a, which is
|
||||
Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
|
||||
governed by the TrueCrypt License 3.0, also from the source code of
|
||||
Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
|
||||
and which is governed by the 'License Agreement for Encryption for the Masses'
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and which is governed by the 'License Agreement for Encryption for the Masses'
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -89,7 +89,7 @@ NTSTATUS DriverEntry (PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
|
||||
SelfTestsPassed = AutoTestAlgorithms();
|
||||
|
||||
// Enable device class filters and load boot arguments if the driver is set to start at system boot
|
||||
|
||||
|
||||
if (NT_SUCCESS (TCReadRegistryKey (RegistryPath, L"Start", &startKeyValue)))
|
||||
{
|
||||
if (startKeyValue->Type == REG_DWORD && *((uint32 *) startKeyValue->Data) == SERVICE_BOOT_START)
|
||||
@@ -156,7 +156,7 @@ void DumpMemory (void *mem, int size)
|
||||
for (j = 0; j < size / 8; j++)
|
||||
{
|
||||
memset (str,0,sizeof str);
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (m[i] > ' ' && m[i] <= '~')
|
||||
str[i]=m[i];
|
||||
@@ -330,10 +330,10 @@ NTSTATUS TCDispatchQueueIRP (PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||
return TCCompleteIrp (Irp, ntStatus, 0);
|
||||
|
||||
IoMarkIrpPending (Irp);
|
||||
|
||||
|
||||
ExInterlockedInsertTailList (&Extension->ListEntry, &Irp->Tail.Overlay.ListEntry, &Extension->ListSpinLock);
|
||||
KeReleaseSemaphore (&Extension->RequestSemaphore, IO_DISK_INCREMENT, 1, FALSE);
|
||||
|
||||
|
||||
return STATUS_PENDING;
|
||||
|
||||
case IRP_MJ_FLUSH_BUFFERS:
|
||||
@@ -375,7 +375,7 @@ NTSTATUS TCCreateRootDeviceObject (PDRIVER_OBJECT DriverObject)
|
||||
RtlInitUnicodeString (&Win32NameString, dosname);
|
||||
|
||||
Dump ("Creating root device nt=%ls dos=%ls\n", ntname, dosname);
|
||||
|
||||
|
||||
ntStatus = IoCreateDevice (
|
||||
DriverObject,
|
||||
sizeof (BOOL),
|
||||
@@ -559,10 +559,10 @@ NTSTATUS ProcessVolumeDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION
|
||||
UCHAR volId[128], tmp[] = { 0,0 };
|
||||
PMOUNTDEV_UNIQUE_ID outputBuffer = (PMOUNTDEV_UNIQUE_ID) Irp->AssociatedIrp.SystemBuffer;
|
||||
|
||||
RtlStringCbCopyA (volId, sizeof(volId),TC_UNIQUE_ID_PREFIX);
|
||||
RtlStringCbCopyA (volId, sizeof(volId),TC_UNIQUE_ID_PREFIX);
|
||||
tmp[0] = 'A' + (UCHAR) Extension->nDosDriveNo;
|
||||
RtlStringCbCatA (volId, sizeof(volId),tmp);
|
||||
|
||||
|
||||
outputBuffer->UniqueIdLength = (USHORT) strlen (volId);
|
||||
outLength = (ULONG) (strlen (volId) + sizeof (USHORT));
|
||||
|
||||
@@ -593,7 +593,7 @@ NTSTATUS ProcessVolumeDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION
|
||||
{
|
||||
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
|
||||
Irp->IoStatus.Information = 0;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
TCGetDosNameFromNumber (ntName, sizeof(ntName),Extension->nDosDriveNo, DeviceNamespaceDefault);
|
||||
@@ -612,7 +612,7 @@ NTSTATUS ProcessVolumeDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION
|
||||
}
|
||||
|
||||
RtlCopyMemory ((PCHAR)outputBuffer->Name,ntUnicodeString.Buffer, ntUnicodeString.Length);
|
||||
|
||||
|
||||
Irp->IoStatus.Status = STATUS_SUCCESS;
|
||||
Irp->IoStatus.Information = outLength;
|
||||
|
||||
@@ -643,7 +643,7 @@ NTSTATUS ProcessVolumeDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION
|
||||
if (EnableExtendedIoctlSupport)
|
||||
{
|
||||
if (ValidateIOBufferSize (Irp, sizeof (STORAGE_PROPERTY_QUERY), ValidateInput))
|
||||
{
|
||||
{
|
||||
PSTORAGE_PROPERTY_QUERY pStoragePropQuery = (PSTORAGE_PROPERTY_QUERY) Irp->AssociatedIrp.SystemBuffer;
|
||||
STORAGE_QUERY_TYPE type = pStoragePropQuery->QueryType;
|
||||
|
||||
@@ -702,7 +702,7 @@ NTSTATUS ProcessVolumeDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION
|
||||
}
|
||||
else
|
||||
return TCCompleteIrp (Irp, STATUS_INVALID_DEVICE_REQUEST, 0);
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case IOCTL_DISK_GET_PARTITION_INFO:
|
||||
@@ -783,13 +783,13 @@ NTSTATUS ProcessVolumeDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION
|
||||
if (ValidateIOBufferSize (Irp, sizeof (VERIFY_INFORMATION), ValidateInput))
|
||||
{
|
||||
HRESULT hResult;
|
||||
ULONGLONG ullStartingOffset, ullNewOffset, ullEndOffset;
|
||||
ULONGLONG ullStartingOffset, ullNewOffset, ullEndOffset;
|
||||
PVERIFY_INFORMATION pVerifyInformation;
|
||||
pVerifyInformation = (PVERIFY_INFORMATION) Irp->AssociatedIrp.SystemBuffer;
|
||||
|
||||
ullStartingOffset = (ULONGLONG) pVerifyInformation->StartingOffset.QuadPart;
|
||||
hResult = ULongLongAdd(ullStartingOffset,
|
||||
(ULONGLONG) Extension->cryptoInfo->hiddenVolume ? Extension->cryptoInfo->hiddenVolumeOffset : Extension->cryptoInfo->volDataAreaOffset,
|
||||
hResult = ULongLongAdd(ullStartingOffset,
|
||||
(ULONGLONG) Extension->cryptoInfo->hiddenVolume ? Extension->cryptoInfo->hiddenVolumeOffset : Extension->cryptoInfo->volDataAreaOffset,
|
||||
&ullNewOffset);
|
||||
if (hResult != S_OK)
|
||||
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
|
||||
@@ -801,7 +801,7 @@ NTSTATUS ProcessVolumeDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION
|
||||
{
|
||||
IO_STATUS_BLOCK ioStatus;
|
||||
PVOID buffer = TCalloc (max (pVerifyInformation->Length, PAGE_SIZE));
|
||||
|
||||
|
||||
if (!buffer)
|
||||
{
|
||||
Irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES;
|
||||
@@ -847,7 +847,7 @@ NTSTATUS ProcessVolumeDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case IOCTL_VOLUME_ONLINE:
|
||||
Irp->IoStatus.Status = STATUS_SUCCESS;
|
||||
Irp->IoStatus.Information = 0;
|
||||
@@ -1054,7 +1054,7 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
// Go through all volume types (e.g., normal, hidden)
|
||||
for (volumeType = TC_VOLUME_TYPE_NORMAL;
|
||||
volumeType < TC_VOLUME_TYPE_COUNT;
|
||||
volumeType++)
|
||||
volumeType++)
|
||||
{
|
||||
/* Read the volume header */
|
||||
switch (volumeType)
|
||||
@@ -1121,7 +1121,7 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
IO_STATUS_BLOCK IoStatus;
|
||||
LARGE_INTEGER offset;
|
||||
byte readBuffer [TC_SECTOR_SIZE_BIOS];
|
||||
|
||||
|
||||
if (!ValidateIOBufferSize (Irp, sizeof (GetSystemDriveConfigurationRequest), ValidateInputOutput))
|
||||
break;
|
||||
|
||||
@@ -1254,7 +1254,7 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
for (drive = MIN_MOUNTED_VOLUME_DRIVE_NUMBER; drive <= MAX_MOUNTED_VOLUME_DRIVE_NUMBER; ++drive)
|
||||
{
|
||||
PEXTENSION ListExtension;
|
||||
|
||||
|
||||
ListDevice = GetVirtualVolumeDeviceObject (drive);
|
||||
if (!ListDevice)
|
||||
continue;
|
||||
@@ -1500,9 +1500,9 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
MOUNT_STRUCT *mount = (MOUNT_STRUCT *) Irp->AssociatedIrp.SystemBuffer;
|
||||
|
||||
if (mount->VolumePassword.Length > MAX_PASSWORD || mount->ProtectedHidVolPassword.Length > MAX_PASSWORD
|
||||
|| mount->pkcs5_prf < 0 || mount->pkcs5_prf > LAST_PRF_ID
|
||||
|| mount->pkcs5_prf < 0 || mount->pkcs5_prf > LAST_PRF_ID
|
||||
|| mount->VolumePim < -1 || mount->VolumePim == INT_MAX
|
||||
|| mount->ProtectedHidVolPkcs5Prf < 0 || mount->ProtectedHidVolPkcs5Prf > LAST_PRF_ID
|
||||
|| mount->ProtectedHidVolPkcs5Prf < 0 || mount->ProtectedHidVolPkcs5Prf > LAST_PRF_ID
|
||||
|| (mount->bTrueCryptMode != FALSE && mount->bTrueCryptMode != TRUE)
|
||||
)
|
||||
{
|
||||
@@ -1690,7 +1690,7 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
return TCCompleteIrp (Irp, STATUS_INVALID_DEVICE_REQUEST, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
if (!NT_SUCCESS (Irp->IoStatus.Status))
|
||||
{
|
||||
@@ -1739,7 +1739,7 @@ NTSTATUS TCStartThreadInProcess (PKSTART_ROUTINE threadProc, PVOID threadArg, PK
|
||||
}
|
||||
|
||||
InitializeObjectAttributes (&threadObjAttributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
|
||||
|
||||
|
||||
status = PsCreateSystemThread (&threadHandle, THREAD_ALL_ACCESS, &threadObjAttributes, processHandle, NULL, threadProc, threadArg);
|
||||
if (!NT_SUCCESS (status))
|
||||
return status;
|
||||
@@ -2255,7 +2255,7 @@ void TCDeleteDeviceObject (PDEVICE_OBJECT DeviceObject, PEXTENSION Extension)
|
||||
PsDereferenceImpersonationTokenD = MmGetSystemRoutineAddress (&name);
|
||||
if (!PsDereferenceImpersonationTokenD)
|
||||
TC_BUG_CHECK (STATUS_NOT_IMPLEMENTED);
|
||||
|
||||
|
||||
# define PsDereferencePrimaryToken
|
||||
# define PsDereferenceImpersonationToken PsDereferenceImpersonationTokenD
|
||||
|
||||
@@ -2390,11 +2390,11 @@ NTSTATUS SendDeviceIoControlRequest (PDEVICE_OBJECT deviceObject, ULONG ioContro
|
||||
args.outputBufferSize = outputBufferSize;
|
||||
|
||||
KeInitializeEvent (&args.WorkItemCompletedEvent, SynchronizationEvent, FALSE);
|
||||
IoQueueWorkItem (workItem, SendDeviceIoControlRequestWorkItemRoutine, DelayedWorkQueue, &args);
|
||||
IoQueueWorkItem (workItem, SendDeviceIoControlRequestWorkItemRoutine, DelayedWorkQueue, &args);
|
||||
|
||||
KeWaitForSingleObject (&args.WorkItemCompletedEvent, Executive, KernelMode, FALSE, NULL);
|
||||
IoFreeWorkItem (workItem);
|
||||
|
||||
|
||||
return args.Status;
|
||||
}
|
||||
|
||||
@@ -2449,7 +2449,7 @@ NTSTATUS ProbeRealDriveSize (PDEVICE_OBJECT driveDeviceObject, LARGE_INTEGER *dr
|
||||
for (offset.QuadPart = sysLength.QuadPart; ; offset.QuadPart += TC_SECTOR_SIZE_BIOS)
|
||||
{
|
||||
status = TCReadDevice (driveDeviceObject, sectorBuffer, offset, TC_SECTOR_SIZE_BIOS);
|
||||
|
||||
|
||||
if (NT_SUCCESS (status))
|
||||
status = TCWriteDevice (driveDeviceObject, sectorBuffer, offset, TC_SECTOR_SIZE_BIOS);
|
||||
|
||||
@@ -2587,7 +2587,7 @@ NTSTATUS TCFsctlCall (PFILE_OBJECT fileObject, LONG IoControlCode,
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
|
||||
stack = IoGetNextIrpStackLocation(irp);
|
||||
|
||||
|
||||
stack->MajorFunction = IRP_MJ_FILE_SYSTEM_CONTROL;
|
||||
stack->MinorFunction = IRP_MN_USER_FS_REQUEST;
|
||||
stack->FileObject = fileObject;
|
||||
@@ -2638,7 +2638,7 @@ NTSTATUS RemoveDriveLink (int nDosDriveNo)
|
||||
|
||||
NTSTATUS MountManagerMount (MOUNT_STRUCT *mount)
|
||||
{
|
||||
NTSTATUS ntStatus;
|
||||
NTSTATUS ntStatus;
|
||||
WCHAR arrVolume[256];
|
||||
char buf[200];
|
||||
PMOUNTMGR_TARGET_NAME in = (PMOUNTMGR_TARGET_NAME) buf;
|
||||
@@ -2670,7 +2670,7 @@ NTSTATUS MountManagerMount (MOUNT_STRUCT *mount)
|
||||
|
||||
NTSTATUS MountManagerUnmount (int nDosDriveNo)
|
||||
{
|
||||
NTSTATUS ntStatus;
|
||||
NTSTATUS ntStatus;
|
||||
char buf[256], out[300];
|
||||
PMOUNTMGR_MOUNT_POINT in = (PMOUNTMGR_MOUNT_POINT) buf;
|
||||
|
||||
@@ -2694,10 +2694,10 @@ NTSTATUS MountManagerUnmount (int nDosDriveNo)
|
||||
NTSTATUS MountDevice (PDEVICE_OBJECT DeviceObject, MOUNT_STRUCT *mount)
|
||||
{
|
||||
PDEVICE_OBJECT NewDeviceObject;
|
||||
NTSTATUS ntStatus;
|
||||
NTSTATUS ntStatus;
|
||||
|
||||
// Make sure the user is asking for a reasonable nDosDriveNo
|
||||
if (mount->nDosDriveNo >= 0 && mount->nDosDriveNo <= 25
|
||||
if (mount->nDosDriveNo >= 0 && mount->nDosDriveNo <= 25
|
||||
&& IsDriveLetterAvailable (mount->nDosDriveNo, DeviceNamespaceDefault) // drive letter must not exist both locally and globally
|
||||
&& IsDriveLetterAvailable (mount->nDosDriveNo, DeviceNamespaceGlobal)
|
||||
)
|
||||
@@ -2868,7 +2868,7 @@ NTSTATUS MountDevice (PDEVICE_OBJECT DeviceObject, MOUNT_STRUCT *mount)
|
||||
FILE_FS_LABEL_INFORMATION* labelInfo = (FILE_FS_LABEL_INFORMATION*) TCalloc (labelInfoSize);
|
||||
labelInfo->VolumeLabelLength = labelEffectiveLen * sizeof(WCHAR);
|
||||
memcpy (labelInfo->VolumeLabel, mount->wszLabel, labelInfo->VolumeLabelLength);
|
||||
|
||||
|
||||
if (STATUS_SUCCESS == ZwSetVolumeInformationFile (volumeHandle, &ioblock, labelInfo, labelInfoSize, FileFsLabelInformation))
|
||||
{
|
||||
mount->bDriverSetLabel = TRUE;
|
||||
@@ -2891,7 +2891,7 @@ NTSTATUS MountDevice (PDEVICE_OBJECT DeviceObject, MOUNT_STRUCT *mount)
|
||||
Dump ("Mount FAILURE TC code = 0x%08x\n", mount->nReturnCode);
|
||||
TCDeleteDeviceObject (NewDeviceObject, NewExtension);
|
||||
}
|
||||
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -2949,7 +2949,7 @@ NTSTATUS UnmountDevice (UNMOUNT_STRUCT *unmountRequest, PDEVICE_OBJECT deviceObj
|
||||
TCSleep (100);
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
// Volume cannot be opened => force dismount if allowed
|
||||
if (!ignoreOpenFiles)
|
||||
@@ -3084,10 +3084,10 @@ void GetIntersection (uint64 start1, uint32 length1, uint64 start2, uint64 end2,
|
||||
{
|
||||
uint64 end1 = start1 + length1 - 1;
|
||||
uint64 intersectEnd = (end1 <= end2) ? end1 : end2;
|
||||
|
||||
|
||||
*intersectStart = (start1 >= start2) ? start1 : start2;
|
||||
*intersectLength = (uint32) ((*intersectStart > intersectEnd) ? 0 : intersectEnd + 1 - *intersectStart);
|
||||
|
||||
|
||||
if (*intersectLength == 0)
|
||||
*intersectStart = start1;
|
||||
}
|
||||
@@ -3103,7 +3103,7 @@ BOOL IsAccessibleByUser (PUNICODE_STRING objectFileName, BOOL readOnly)
|
||||
ASSERT (!IoIsSystemThread (PsGetCurrentThread()));
|
||||
|
||||
InitializeObjectAttributes (&fileObjAttributes, objectFileName, OBJ_CASE_INSENSITIVE | OBJ_FORCE_ACCESS_CHECK | OBJ_KERNEL_HANDLE, NULL, NULL);
|
||||
|
||||
|
||||
status = ZwCreateFile (&fileHandle,
|
||||
readOnly ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE,
|
||||
&fileObjAttributes,
|
||||
@@ -3243,7 +3243,7 @@ NTSTATUS TCReadRegistryKey (PUNICODE_STRING keyPath, wchar_t *keyValueName, PKEY
|
||||
|
||||
RtlInitUnicodeString (&valName, keyValueName);
|
||||
status = ZwQueryValueKey (regKeyHandle, &valName, KeyValuePartialInformation, NULL, 0, &size);
|
||||
|
||||
|
||||
if (!NT_SUCCESS (status) && status != STATUS_BUFFER_OVERFLOW && status != STATUS_BUFFER_TOO_SMALL)
|
||||
{
|
||||
ZwClose (regKeyHandle);
|
||||
@@ -3356,7 +3356,7 @@ NTSTATUS ReadRegistryConfigFlags (BOOL driverEntry)
|
||||
}
|
||||
|
||||
EnableHwEncryption ((flags & TC_DRIVER_CONFIG_DISABLE_HARDWARE_ENCRYPTION) ? FALSE : TRUE);
|
||||
|
||||
|
||||
EnableExtendedIoctlSupport = (flags & TC_DRIVER_CONFIG_ENABLE_EXTENDED_IOCTL)? TRUE : FALSE;
|
||||
}
|
||||
else
|
||||
@@ -3495,7 +3495,7 @@ BOOL IsVolumeAccessibleByCurrentUser (PEXTENSION volumeDeviceExtension)
|
||||
|
||||
if (!accessToken)
|
||||
goto ret;
|
||||
|
||||
|
||||
if (SeTokenIsAdmin (accessToken))
|
||||
{
|
||||
result = TRUE;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/*
|
||||
Legal Notice: Some portions of the source code contained in this file were
|
||||
derived from the source code of TrueCrypt 7.1a, which is
|
||||
Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
|
||||
derived from the source code of TrueCrypt 7.1a, which is
|
||||
Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
|
||||
governed by the TrueCrypt License 3.0, also from the source code of
|
||||
Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
|
||||
and which is governed by the 'License Agreement for Encryption for the Masses'
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and which is governed by the 'License Agreement for Encryption for the Masses'
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -54,7 +54,7 @@ typedef struct EXTENSION
|
||||
CRYPTO_INFO *cryptoInfo; /* Cryptographic and other information for this device */
|
||||
|
||||
__int64 HostLength;
|
||||
__int64 DiskLength; /* The length of the disk referred to by this device */
|
||||
__int64 DiskLength; /* The length of the disk referred to by this device */
|
||||
__int64 NumberOfCylinders; /* Partition info */
|
||||
ULONG TracksPerCylinder; /* Partition info */
|
||||
ULONG SectorsPerTrack; /* Partition info */
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/*
|
||||
Legal Notice: Some portions of the source code contained in this file were
|
||||
derived from the source code of TrueCrypt 7.1a, which is
|
||||
Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
|
||||
derived from the source code of TrueCrypt 7.1a, which is
|
||||
Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
|
||||
governed by the TrueCrypt License 3.0, also from the source code of
|
||||
Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
|
||||
and which is governed by the 'License Agreement for Encryption for the Masses'
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and which is governed by the 'License Agreement for Encryption for the Masses'
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -82,7 +82,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
PARTITION_INFORMATION pi;
|
||||
PARTITION_INFORMATION_EX pix;
|
||||
LARGE_INTEGER diskLengthInfo;
|
||||
DISK_GEOMETRY dg;
|
||||
DISK_GEOMETRY dg;
|
||||
STORAGE_PROPERTY_QUERY storagePropertyQuery = {0};
|
||||
STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR storageDescriptor = {0};
|
||||
|
||||
@@ -105,8 +105,8 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
storagePropertyQuery.QueryType = PropertyStandardQuery;
|
||||
|
||||
/* IOCTL_STORAGE_QUERY_PROPERTY supported only on Vista and above */
|
||||
if (NT_SUCCESS (TCSendHostDeviceIoControlRequestEx (DeviceObject, Extension, IOCTL_STORAGE_QUERY_PROPERTY,
|
||||
(char*) &storagePropertyQuery, sizeof(storagePropertyQuery),
|
||||
if (NT_SUCCESS (TCSendHostDeviceIoControlRequestEx (DeviceObject, Extension, IOCTL_STORAGE_QUERY_PROPERTY,
|
||||
(char*) &storagePropertyQuery, sizeof(storagePropertyQuery),
|
||||
(char *) &storageDescriptor, sizeof (storageDescriptor))))
|
||||
{
|
||||
Extension->HostBytesPerPhysicalSector = storageDescriptor.BytesPerPhysicalSector;
|
||||
@@ -300,8 +300,8 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
}
|
||||
else
|
||||
{
|
||||
// Try to gain "raw" access to the partition in case there is a live filesystem on it (otherwise,
|
||||
// the NTFS driver guards hidden sectors and prevents mounting using a backup header e.g. after the user
|
||||
// Try to gain "raw" access to the partition in case there is a live filesystem on it (otherwise,
|
||||
// the NTFS driver guards hidden sectors and prevents mounting using a backup header e.g. after the user
|
||||
// accidentally quick-formats a dismounted partition-hosted TrueCrypt volume as NTFS).
|
||||
|
||||
PFILE_OBJECT pfoTmpDeviceFile = NULL;
|
||||
@@ -335,7 +335,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
// Go through all volume types (e.g., normal, hidden)
|
||||
for (volumeType = TC_VOLUME_TYPE_NORMAL;
|
||||
volumeType < TC_VOLUME_TYPE_COUNT;
|
||||
volumeType++)
|
||||
volumeType++)
|
||||
{
|
||||
Dump ("Trying to open volume type %d\n", volumeType);
|
||||
|
||||
@@ -451,7 +451,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
Dump ("Read didn't read enough data\n");
|
||||
|
||||
// If FSCTL_ALLOW_EXTENDED_DASD_IO failed and there is a live filesystem on the partition, then the
|
||||
// filesystem driver may report EOF when we are reading hidden sectors (when the filesystem is
|
||||
// filesystem driver may report EOF when we are reading hidden sectors (when the filesystem is
|
||||
// shorter than the partition). This can happen for example after the user quick-formats a dismounted
|
||||
// partition-hosted TrueCrypt volume and then tries to mount the volume using the embedded backup header.
|
||||
memset (readBuffer, 0, TC_VOLUME_HEADER_EFFECTIVE_SIZE);
|
||||
@@ -610,7 +610,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
}
|
||||
|
||||
// If we are supposed to actually mount the hidden volume (not just to protect it)
|
||||
if (!mount->bProtectHiddenVolume)
|
||||
if (!mount->bProtectHiddenVolume)
|
||||
{
|
||||
Extension->DiskLength = cryptoInfoPtr->hiddenVolumeSize;
|
||||
Extension->cryptoInfo->hiddenVolume = TRUE;
|
||||
@@ -621,7 +621,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
// Hidden volume protection
|
||||
Extension->cryptoInfo->hiddenVolume = FALSE;
|
||||
Extension->cryptoInfo->bProtectHiddenVolume = TRUE;
|
||||
|
||||
|
||||
Extension->cryptoInfo->hiddenVolumeProtectedSize = tmpCryptoInfo->hiddenVolumeSize;
|
||||
|
||||
Dump ("Hidden volume protection active: %I64d-%I64d (%I64d)\n", Extension->cryptoInfo->hiddenVolumeOffset, Extension->cryptoInfo->hiddenVolumeProtectedSize + Extension->cryptoInfo->hiddenVolumeOffset - 1, Extension->cryptoInfo->hiddenVolumeProtectedSize);
|
||||
@@ -642,7 +642,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
|
||||
// If this is a hidden volume, make sure we are supposed to actually
|
||||
// mount it (i.e. not just to protect it)
|
||||
if (volumeType == TC_VOLUME_TYPE_NORMAL || !mount->bProtectHiddenVolume)
|
||||
if (volumeType == TC_VOLUME_TYPE_NORMAL || !mount->bProtectHiddenVolume)
|
||||
{
|
||||
// Validate sector size
|
||||
if (bRawDevice && Extension->cryptoInfo->SectorSize != Extension->HostBytesPerSector)
|
||||
@@ -660,7 +660,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
Extension->PartitionType = 0;
|
||||
|
||||
Extension->bRawDevice = bRawDevice;
|
||||
|
||||
|
||||
memset (Extension->wszVolume, 0, sizeof (Extension->wszVolume));
|
||||
if (wcsstr (pwszMountVolume, WIDE ("\\??\\UNC\\")) == pwszMountVolume)
|
||||
{
|
||||
@@ -690,7 +690,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
crypto_close (tmpCryptoInfo);
|
||||
tmpCryptoInfo = NULL;
|
||||
}
|
||||
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -698,7 +698,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
|| mount->nReturnCode != ERR_PASSWORD_WRONG)
|
||||
{
|
||||
/* If we are not supposed to protect a hidden volume, the only error that is
|
||||
tolerated is ERR_PASSWORD_WRONG (to allow mounting a possible hidden volume).
|
||||
tolerated is ERR_PASSWORD_WRONG (to allow mounting a possible hidden volume).
|
||||
|
||||
If we _are_ supposed to protect a hidden volume, we do not tolerate any error
|
||||
(both volume headers must be successfully decrypted). */
|
||||
@@ -863,8 +863,8 @@ static void RestoreTimeStamp (PEXTENSION Extension)
|
||||
FILE_BASIC_INFORMATION FileBasicInfo;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
|
||||
if (Extension->hDeviceFile != NULL
|
||||
&& Extension->bRawDevice == FALSE
|
||||
if (Extension->hDeviceFile != NULL
|
||||
&& Extension->bRawDevice == FALSE
|
||||
&& Extension->bReadOnly == FALSE
|
||||
&& Extension->bTimeStampValid)
|
||||
{
|
||||
@@ -872,7 +872,7 @@ static void RestoreTimeStamp (PEXTENSION Extension)
|
||||
&IoStatusBlock,
|
||||
&FileBasicInfo,
|
||||
sizeof (FileBasicInfo),
|
||||
FileBasicInformation);
|
||||
FileBasicInformation);
|
||||
|
||||
if (!NT_SUCCESS (ntStatus))
|
||||
{
|
||||
@@ -891,7 +891,7 @@ static void RestoreTimeStamp (PEXTENSION Extension)
|
||||
&IoStatusBlock,
|
||||
&FileBasicInfo,
|
||||
sizeof (FileBasicInfo),
|
||||
FileBasicInformation);
|
||||
FileBasicInformation);
|
||||
|
||||
if (!NT_SUCCESS (ntStatus))
|
||||
Dump ("ZwSetInformationFile failed in RestoreTimeStamp: NTSTATUS 0x%08x\n",ntStatus);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/*
|
||||
Legal Notice: Some portions of the source code contained in this file were
|
||||
derived from the source code of TrueCrypt 7.1a, which is
|
||||
Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
|
||||
derived from the source code of TrueCrypt 7.1a, which is
|
||||
Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
|
||||
governed by the TrueCrypt License 3.0, also from the source code of
|
||||
Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
|
||||
and which is governed by the 'License Agreement for Encryption for the Masses'
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and which is governed by the 'License Agreement for Encryption for the Masses'
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NO_MFC 1
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
@@ -57,7 +57,7 @@ NTSTATUS VolumeFilterAddDevice (PDRIVER_OBJECT driverObject, PDEVICE_OBJECT pdo)
|
||||
status = STATUS_DEVICE_REMOVED;
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
||||
Extension->IsVolumeFilterDevice = TRUE;
|
||||
Extension->DeviceObject = filterDeviceObject;
|
||||
Extension->Pdo = pdo;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
||||
by the TrueCrypt License 3.0.
|
||||
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
Modifications and additions to the original source code (contained in this file)
|
||||
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
|
||||
and are governed by the Apache License 2.0 the full text of which is
|
||||
contained in the file License.txt included in VeraCrypt binary and source
|
||||
|
||||
Reference in New Issue
Block a user