[KMTESTS:RTL] (CORE-14565)
+ Added buffer overrun tests.
+ New style header.
+ ISO C90 compatibility
[DDK] (CORE-9819): RtlUnicodeStringPrintf(Ex) and RtlUnicodeStringValidate(Ex) fixes plus formatting.
[DDK]: Cosmetic changes (NTSTATUS variable naming and tabs)
[DDK] First implementation of Unicode functions for NtStrSafe (CORE-9819)
+ This implementation does not modify the interface of previous functions.
+ Since we need length returned for the destination UNICODE_STRING.Length field:
- an intermediate "Len" postfixed function was added with optional
argument to return the _vsnwprintf character count.
- Wide Printf(Ex) functions already existent work now call new Rtlp
private worker functions.
+ For several UnicodeStringPrintf(Ex) tests, see work going on CORE-14565
NOTES:
+ MSDN says they won't insert NULL characters on formatted strings. But
seems this is incorrect at MSDN (interpret this as DONT ASSUME NULL-termination).
We return zero-terminated strings, and MS functions seems to do the same.
(XP DDK 7.1)
[DDK] First implementation of Unicode functions for NtStrSafe (CORE-9819)
+ This implementation does not modify the interface of previous functions.
+ Since we need length returned for the destination UNICODE_STRING.Length field:
- an intermediate "Len" postfixed function was added with optional
argument to return the _vsnwprintf character count.
- Wide Printf(Ex) functions already existent work now call new Rtlp
private worker functions.
+ For several UnicodeStringPrintf(Ex) tests, see work going on CORE-14565
NOTES:
+ MSDN says they won't insert NULL characters on formatted strings. But
seems this is incorrect at MSDN (interpret this as DONT ASSUME NULL-termination).
We return zero-terminated strings, and MS functions seems to do the same.
(XP DDK 7.1)
[DDK] Fixed bad NtStrSafe.h va_start call (CORE-9819)
Update on RtlUnicodeStringPrintfEx plus cosmetic changes.
[DDK] First implementation of Unicode functions for NtStrSafe (CORE-9819)
+ This implementation does not modify the interface of previous functions.
+ Since we need length returned for the destination UNICODE_STRING.Length field:
- an intermediate "Len" postfixed function was added with optional
argument to return the _vsnwprintf character count.
- Wide Printf(Ex) functions already existent work now call new Rtlp
private worker functions.
+ For several UnicodeStringPrintf(Ex) tests, see work going on CORE-14565
NOTES:
+ MSDN says they won't insert NULL characters on formatted strings. But
seems this is incorrect at MSDN (interpret this as DONT ASSUME NULL-termination).
We return zero-terminated strings, and MS functions seems to do the same.
(XP DDK 7.1)
[KMTESTS:RTL] Tests for new RtlUnicodePrintf(Ex) functions (CORE-14565)
+ 45 Tests working.
+ Lacks remaining non-Unicode functions in NtStrSafe.h for now.
+ Used for first tests on CORE-9819
[KMTESTS/RTL] Fixed test not taking care of null (CORE-14565)
[DDK] Fixed bad NtStrSafe.h va_start call (CORE-9819)
[KMTESTS:RTL] First Test.
Update on RtlUnicodeStringPrintfEx plus cosmetic changes.
[KMTESTS] Added NtStrSafe to test lists (CORE-14565)
First commit: Skeleton for test implementation + Addition to COMMON SOURCES in kmtests Cmake lists.
WIP.
+Implementation of RtlStringVPrintfWorkerLenW, RtlStringVPrintfExWorkerLenW to avoid changing existing public functions. This is required as existent functions did not return vsnprintf result, so we didn't have any return info to update UNICODE_STRING.Length.
+Additional implementation of RtlUnicodeStringValidate for checking purposes.
+Former RtlStringVPrintfWorker(ex) refactored to RtlInternalStringVPrintf(Ex)WorkerW.
+No ANSI functions affected as we didn't need them for Unicode printf's.
WIP: RtlUnicodeStringPrintf
This fixes the crashes in HvpGetCellMapped on Windows Server 2003 when booting from Freeloader, as mentioned in maharmstone/btrfs#16.
When the bootloader loads the system hive, it cleans the data pertaining to any volatile keys. The Windows bootloader does this by setting SubKeyCounts[Volatile] to 0. After boot, the kernel marks any cell where this is 0 but SubKeyLists[Volatile] isn't HCELL_NIL as dirty, meaning that the sanitized version will then get flushed to the disk.
Because Freeloader sets SubKeyLists[Volatile] to HCELL_NIL straightaway, Windows thinks the cell is clean, and can unload it without flushing. If it then reads it from the disk, it will crash in HvpGetCellMapped due to the stale volatile pointers.
If you break on nt!CmpInitializeSystemHive on Windows and "gu" to the let the function run, you'll see that DirtyVector of the HHIVE has only the first 8 bits set. If you run it using the official bootloader, it'll have a lot more than that.
Rename RosAudioSrv to AudioSrv in audio service itself and in all system components which are related to this, same as it done in Win2k3.
It allows MS DxDiag to detect the system audio service correctly, so it becomes possible to run DirectSound test properly with MS dsound.dll, although it works with some minor errors and only in older VirtualBox versions, ~ up to 5.1.38 (and in other emulators as well).
CORE-16307
- kernel32!BaseCreateStack() is compatible with ntdll!RtlpCreateUserStack().
- When checking whether a stack guard page can be added, its size has to
be accounted for in the checking logic.
- We have to satisfy the PEB::MinimumStackCommit constraint.
- We cannot use PEB::GuaranteedStackBytes in BaseCreateStack() since it is
nowhere initialized (default is 0). It gets initialized to a non-zero
value when the user manually calls SetThreadStackGuarantee().
https://www.installsetupconfig.com/win32programming/windowsthreadsprocessapis7_6.html
- RtlpCreateUserStack(): Fix memory leak in failure case.
- RtlpFreeUserStack() doesn't need to return anything.
See also commit 1bc59379 (r59868).
CORE-11319