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

2491 Commits

Author SHA1 Message Date
Mounir IDRASSI
d9e17522ee Windows: Update Windows version check on startup to require Win10 1809 or later
- Add IsWin10BuildAtLeast() helper function to check Windows 10 build numbers
- Replace direct build number comparison with IsWin10BuildAtLeast() for ReflectDrivers check
- Update error message to be more specific about Windows version requirement
2024-12-25 17:00:37 +01:00
Mounir IDRASSI
81f0adcc35 Windows Driver: set Windows 10 version 1809 as minimum.
To support this, we had to replace ExAllocatePool2 by ExAllocatePoolUninitialized.
2024-12-25 16:18:19 +01:00
Mounir IDRASSI
283059523d Windows Driver: make UpdateBuffer function more robust by adding security region size parameter 2024-12-25 16:09:10 +01:00
Mounir IDRASSI
650984c958 Linux: Fix warning during build cause by deprecated 'u' modifier in "ar" command 2024-12-25 11:42:37 +01:00
Mounir IDRASSI
3f8ac7cd51 Add XML validation Github workflow (contributed by Jertzukka github.com/Jertzukka/VeraCrypt/tree/ci) 2024-12-25 11:35:58 +01:00
Mounir IDRASSI
ca331b8b34 Linux/macOS: Simplify sudo session detection logic and extend it to macOS
This update simplifies the logic for detecting active sudo sessions by checking the exit code of the sudo -n -l command, which reliably returns 0 if a session is active.

Additionally, this approach is now applicable to recent macOS versions, as they no longer have the sudo bug that previously prevented us from using this method.
2024-12-25 11:29:32 +01:00
Mounir IDRASSI
341411e935 Linux: Fix "Password too long" error message not expanded to include max length (#1456) 2024-12-24 09:24:23 +01:00
Mounir IDRASSI
b6e698b376 Linux/macOS: check if volume doesn't exist before starting the mount operation. 2024-12-23 23:10:37 +01:00
Mounir IDRASSI
f05ce4eaf3 Updated Russian translation of Release Notes (by Dmitry Yerokhin) 2024-12-22 23:40:34 +01:00
Mounir IDRASSI
57cc2473e7 Translations: Update Slovenian translation (contributed by Prof. Sasa Divjak) 2024-12-22 23:33:48 +01:00
Mounir IDRASSI
3bb5184645 Windows: Increment version to 1.26.17.2. Update signed drivers. 2024-11-27 01:05:55 +01:00
Mounir IDRASSI
c98fc900d8 Windows Setup: Fix the implementation of backup/restore of file permission during update 2024-11-27 01:04:55 +01:00
Mounir IDRASSI
968b72947f Update Release Notes. 2024-11-26 23:59:38 +01:00
Mounir IDRASSI
3b4b0f618c Translations: Update Slovenian translation (contributed by Prof. Sasa Divjak) 2024-11-26 23:22:19 +01:00
Mounir IDRASSI
7e398c96d0 Windows: don't test sign driver by default in Release mode. 2024-11-25 00:15:47 +01:00
Mounir IDRASSI
0c5fcf2286 Windows Setup: Fix "Access Denied" issue during VeraCrypt update after a Windows upgrade
During a Windows upgrade, ownership of veracrypt.sys is set to TrustedInstaller, preventing VeraCrypt from accessing the file during an update.

This commit resolves the issue by temporarily taking ownership of the file to rename it, allowing the new file to be copied. The setup process now obtains additional privileges for this operation, which are properly dropped once the file copying is complete.
2024-11-25 00:05:50 +01:00
Mounir IDRASSI
8ad9e7d769 Set 1.26.17 release date to November 24th 2024-11-24 14:04:21 +01:00
Mounir IDRASSI
b6f3d8a23a Translations: Fix issues in Slovenian translation. Complete translation of some entries 2024-11-24 13:46:08 +01:00
Mounir IDRASSI
e798d88407 Translations: Update Slovenian translation (contributed by Prof. Sasa Divjak) 2024-11-24 13:43:34 +01:00
Mounir IDRASSI
53bbee3a7c Windows Driver: Set version to 1.26.17.1. Update signed drivers. 2024-11-24 11:26:41 +01:00
Mounir IDRASSI
453ff2880e Windows Driver: Make max work items count configurable. Increase default to 1024. Queue write IRPs.
- Made the maximum work items count configurable to allow flexibility based on system needs.
  - Increased the default value of max work items count to 1024 to better handle high-throughput scenarios.
  - Queue write IRPs in system worker thread to avoid potential deadlocks in write scenarios.
2024-11-23 17:44:48 +01:00
Mounir IDRASSI
5a85c54c6e Windows Driver: Optimize spinlock usage in CompleteIrpWorkItemRoutine
Reduce the critical section protected by spinlock to only cover the list manipulation operation. Move the ActiveWorkItems counter decrement outside the spinlock using InterlockedDecrement, and separate event signaling from the locked section.
This change minimizes time spent at raised IRQL (DISPATCH_LEVEL) and reduces potential for lock contention.
2024-11-22 15:19:10 +01:00
Mounir IDRASSI
9490336357 Windows: Update signed Windows drivers. 2024-11-20 01:11:15 +01:00
Mounir IDRASSI
b85a2df224 Windows driver: use correct WDM type. Increment version to 1.26.17 2024-11-20 00:21:30 +01:00
Mounir IDRASSI
f9b9a9ca9f Increment version to 1.26.16. Update Release Notes. Update signed Windows drivers. 2024-11-18 00:04:26 +01:00
Mounir IDRASSI
93868acfdd Windows Driver: Use system functions directly instead of dynamic loading since we are targeting Windows 10 2024-11-17 21:37:16 +01:00
Mounir IDRASSI
42fdbcf3ce Windows Driver: Fix deadlock in EncryptedIoQueue due to re-entrant IRP completions
There was a deadlock issue in the driver caused by the CompletionThreadProc function in EncryptedIoQueue.c:
https://sourceforge.net/p/veracrypt/discussion/general/thread/f6e7f623d0/?page=20&limit=25#8362

The driver uses a single thread (CompletionThreadProc) to process IRP completions. When IoCompleteRequest is called within this thread, it can result in new IRPs being generated (e.g., for pagefile operations) that are intercepted by the driver and queued back into the CompletionThreadQueue. Since CompletionThreadProc is the only thread processing this queue and is waiting on IoCompleteRequest, these new IRPs are not handled, leading to a system freeze.

To resolve this issue, the following changes have been made:

Deferred IRP Completion Using Pre-allocated Work Items:
  - Introduced a pool of pre-allocated work items (COMPLETE_IRP_WORK_ITEM) to handle IRP completions without causing additional resource allocations that could trigger new IRPs.
  - The CompletionThreadProc now queues IRP completions to these work items, which are processed in a different context using IoQueueWorkItem, preventing re-entrant IRPs from blocking the completion thread.

Thread-Safe Work Item Pool Management:
  - Implemented a thread-safe mechanism using a semaphore (WorkItemSemaphore), spin lock (WorkItemLock), and a free list (FreeWorkItemsList) to manage the pool of work items.
  - Threads acquire and release work items safely, and if all work items are busy, threads wait until one becomes available.

Reference Counting and Improved Stop Handling:
  - Added an ActiveWorkItems counter to track the number of active work items.
  - Modified EncryptedIoQueueStop to wait for all active work items to complete before proceeding with cleanup, ensuring a clean shutdown.

These changes address the deadlock issue by preventing CompletionThreadProc from being blocked by re-entrant IRPs generated during IoCompleteRequest. By deferring IRP completion to a different context using pre-allocated work items and managing resources properly, we avoid the deadlock and ensure that all IRPs are processed correctly.
2024-11-17 19:39:58 +01:00
Mounir IDRASSI
22c93dd64c Linux/macOS: make binary symbols visible in crash report. 2024-11-17 16:32:44 +01:00
Mounir IDRASSI
b7f6270c0d Windows Driver: Add Unicode define to build and enhance tracing in debug mode 2024-11-16 18:33:28 +01:00
Mounir IDRASSI
a588b20975 Windows: Fix driver crash caused by 32-bit leftover code in derive_key_blake2s function 2024-11-16 17:38:25 +01:00
Mounir IDRASSI
9c9870b103 Windows: Avoid modifying BootArguments structure and use __unaligned keyword to inform compiler that pointer is unaligned.
This avoids issues with existing bootloaders
2024-11-16 01:50:06 +01:00
Mounir IDRASSI
c86577fc0e Windows: remove 32-bit logic from the code since we support only 64-bit. remove 32-bit EFI bootloader files.
We also fix intermediary files folder for Portable and Setup projects
2024-11-16 01:05:15 +01:00
Mounir IDRASSI
489d3e3873 Windows: Fix output directory configuration of COMREG project 2024-11-16 00:56:59 +01:00
Mounir IDRASSI
a69cba98ec Windows: Fix regression in self-test of hash algorithms that caused them to fail 2024-11-16 00:51:32 +01:00
Mounir IDRASSI
3a5fe63224 Windows: Fix VS 2022 projects references 2024-11-15 21:40:56 +01:00
Mounir IDRASSI
62e956942a Windows: remove VS 2019 solution and project files since we migrated to VS 2022. 2024-11-15 18:36:19 +01:00
Mounir IDRASSI
fff9e7275a Windows: Fix delayload link warning about comdlg32.dll not used. Remove unused old project files 2024-11-15 17:51:06 +01:00
Mounir IDRASSI
6d1ad12755 Windows: move main project files and solution from VS 2010 to VS 2022. Delete unused files. 2024-11-15 15:50:32 +01:00
Mounir IDRASSI
ad39040fdc Windows: Fix warning when building Setup and Portable. No file elevation is used for them. 2024-11-15 15:47:28 +01:00
Mounir IDRASSI
214fbb5cbd Windows: Upgrade VS 2019 solution/projects to VS 2022. Remove Win32 configuration for driver and binaries.
Only setup remains 32-bit to be compatible with both x64 and arm64 Windows.
2024-11-15 14:22:45 +01:00
Mounir IDRASSI
de9e472d10 Windows: Fix build of MBR bootloader 2024-11-15 11:16:19 +01:00
Mounir IDRASSI
21e61c8ded Windows: Fix warning in driver build by make get_pkcs5_iteration_count have a single return statement at the end 2024-11-15 11:15:41 +01:00
Mounir IDRASSI
fc4a544180 Windows: Use VS builtin __fastfail intrinsic for fatal exception instead of affecting NULL pointer 2024-11-15 00:42:19 +01:00
Mounir IDRASSI
43ad4f93eb Windows: Fix various compiler warnings 2024-11-15 00:41:07 +01:00
Mounir IDRASSI
117d8dd046 Windows: Fix MBR bootload compilation error following latest changes 2024-11-15 00:38:09 +01:00
Mounir IDRASSI
951c8d210b Use portable alignment macro to be compatible with Linux/macOS 2024-11-13 09:36:06 +01:00
Mounir IDRASSI
75152f7dc0 Use adequate const qualifiers for pbkdf2 functions arguments 2024-11-13 09:28:32 +01:00
Mounir IDRASSI
c63b74bbfe Linux: Fix build error following latest code cleanup 2024-11-13 09:16:49 +01:00
Mounir IDRASSI
cb97351250 Windows: Remove support for 32-bit driver code. Set build target as Windows 10. Simplify code and fix all warnings in driver. 2024-11-13 02:08:51 +01:00
Mounir IDRASSI
ec4b44c238 Windows: Use BCryptGenRandom instead of deprecated CryptGenRandom to generate secure random bytes 2024-11-13 02:04:13 +01:00