Patch by Paolo Bonzini <bonzini [at] gnu [dot] org>
Fix implementation of ExInterlockedAddLargeStatistic
The old version wasn't really atomic.
See issue #6223 for more details.
svn path=/trunk/; revision=51748
- Sam Arun Raj Seeniraj: ObpLookupObjectName() used to reparse endlessly when a symlink points to itself, preventing this by limiting number of reparse attemtps.
See issue #993 for more details.
svn path=/trunk/; revision=51666
- Make ObpParseSymbolicLink properly handle the case when target path has a trailing path separator. Based on findings by Samarunraj.
See issue #993 for more details.
svn path=/trunk/; revision=51665
[NTOSKRNL.EXE]
- Complemented existing stub routines ObpDeleteSymbolicLinkName() and ObpCreateSymbolicLinkName(). Now when symbolic links are created, they are checked for dos drive mapping and ObSystemDeviceMap is updated accordingly.
- Updates to ObpDeviceMapLock are protected by a guarded mutex (changed from fast mutex by Aleksey Bragin).
- Aleksey Bragin: Fix concurrent access issues in ObDereferenceDeviceMap. The DeviceMap read/write operation must be atomic (within the ObpDeviceMapLock region).
[SUBST.EXE]
- Removed hard coded strings and moved it to resource file.
[WIN32CSR.DLL]
- Added a workaround, when target path end with a trailing '\', the substituted drive fails to parse to the target, this is a bug in the object manager, but working around it in CsrDefineDosDevice() by stripping trailing '\'.
See issue #993 for more details.
svn path=/trunk/; revision=51452
- Correctly return whether there is a kernel APC pending in KiSwapContextExit. Fixes IRQL asserts seen in bugs 5955 and 5777. Michael Martin's help in finding and fixing this bug was invaluable. Also thanks to Art Yerkes and testing team for additional information.
See issue #5955 for more details.
svn path=/trunk/; revision=51445
ExInitializePushLock takes a PEX_PUSH_LOCK as parameter, do it the same in the inline version instead of casting to PULONG_PTR everywhere
svn path=/trunk/; revision=51278
- Remove IMG_SCN_TYPE_NOLOAD support which was firstly removed by Alex, then reenabled by Herve. Hopefully it works this time.
- Return proper image size after successfully mapping an image section (previously, 0 was always returned). The change above is necessary for returning correct size.
svn path=/trunk/; revision=51192
- Return STATUS_IMAGE_NOT_AT_BASE when mapping an image section to a different base address. New ntdll loader depends on this and fails to relocate the image if this status is not returned.
svn path=/trunk/; revision=51171
Change strncpy calls to RtlStringSbCopyA (PART 1/x)
Fix bug in MmLoadSystemImage which caused FileName parameter to be freed
svn path=/trunk/; revision=51138
Import strsafe.h from mingw-w64. It's more complete compared to our headers
[DDK]
Import ntstrsafe.h from mingw-w64 (converted from strsafe.h). It's more complete compared to our headers
[NTOSKRNL]
Use sizeof instead of magic numbers
Let's use strsafe functions now instead of strncpy/wcsncpy, which doesn't always NULL terminate :)
svn path=/trunk/; revision=51135
Revert r51108. ProbeForRead doesn't check if memory is readable.
Improve comments and replace trick raising exception with call to ExRaiseAccessViolation.
[WIN32K]
Remove ASSERTs in IntSetSysColors: this function is only called in NtUserSetSysColors in SEH block. It shouldn't crash for NULL pointers.
svn path=/trunk/; revision=51126
- Remove VirtualBox SYSENTER-hack added in r50991.
- Bring back NT-compatible SYSENTER support detection changed in r50991.
svn path=/trunk/; revision=51120
- Implement calling OkayToCloseProcedure callouts to win32k for desktop and window station objects
- Fix a bug that caused ObpCloseHandle to return success even when OkayToCloseProcedure failed
[win32k]
- Rewrite SetProcessWindowStation to actually set the current window station and close the previous one
- Implement OkayToCloseProcedure callouts from the kernel to prevent closing the current desktop or window station
svn path=/trunk/; revision=51115
Patch by Rafal Harabien (rafalh1992 at o2 dot pl)
- Change () to (VOID) in function declarators. Part 6/XX.
[USETUP]
Patch by Rafal Harabien (rafalh1992 at o2 dot pl)
- Initialize Offset field of partition list. Spotted using DPH.
svn path=/trunk/; revision=51072
Define HAL_IRQ_TRANSLATOR_VERSION constant
[NTOSKRNL]
When needed, use HAL_IRQ_TRANSLATOR_VERSION from NDK and don't define it locally
svn path=/trunk/; revision=51057
Revert r51017 that was reverting r51016.
In fact, it seems that cmlib assert error, whatever that eats randomly doesn't come from software issue inside ReactOS, but from a build issue.
Indeed, as you may see in the different tests I performed it shows that the same build produces the same failure, again and again. But, new build shows that there is no assert anylonger with that commit.
Don't ask me why or how it happens, I just don't get it.
But most of the time, it works, no one knows why ("as usual" (tm)). But it's cool.
Someone from BE team and/or buildslaves managers should take a serious look at this issue.
Just in case: if that commit re-hits cmlib assert, don't blame it immediatly, just commit something else, and see whether trunk is still broken.
But, as you can see in testman, we have now test results for r51016 ;-)
svn path=/trunk/; revision=51025
Revert r51016 that quite magically breaks Qemu test bot (Registry corruption?).
Everything was (and is still fine) on VirtualBox.
It will be put back online once the issue will have been fixed.
svn path=/trunk/; revision=51017
Implemented FstubTranslatorNull, FstubTranslateResource, FstubTranslateRequirement, xHalGetInterruptTranslator.
In other words: please welcome interrupt translator in ReactOS.
It's not used yet.
svn path=/trunk/; revision=51012
Implemented FstubFixupEfiPartition():
Purpose is to let ReactOS handle realistic partitions length in case of an EFI/GPT protective MBR.
Indeed, when formatting a disk to GPT, you add a protective MBR that contains a fake partition entry, with type 0xEE having the following property: its size is set to maximum allocatable size in MBR.
In that case, if disk is small, you may go beyond disk size.
This is why a fix to partition length may be needed when re-reading partition entry.
This is the way ReactOS creates protective MBR.
You may find some more information here: http://msdn.microsoft.com/en-us/windows/hardware/gg463525
Fixed xHalIoReadPartitionTable():
- Allocate a buffer that has the proper size (instead of allocating a buffer which is too big). Especially since this leads to partial init only some lines after.
- Remove redundant & useless affectation.
- Check/fix 0xEE partition length in case of an EFI/GPT protective MBR (see upper point).
svn path=/trunk/; revision=51002
- Print supported CPU features.
- Simplify detection of non working but claimed SYSENTER support for intel processors
- Workaround a virtualbox "feature" : claim that SYSENTER isn't supported despite the fact that it is.
Fix hang on registration of mshtml.dll in 2nd stage when using Virtualbox.
svn path=/trunk/; revision=50991
- Implement parameters checking in FsRtlIsNameInExpressionPrivate.
- Add two shortcuts for common wildcard invocations to make the function faster.
- Second (main part of the function) is still under review.
svn path=/trunk/; revision=50981
Fix a serious bug, where NtAllocateVirtualMemory could allocate memory user mode memory above MmHighestUserAddress up to MmSystemRangeStart - 1, which is a no-access area.
svn path=/trunk/; revision=50917
For both FsRtlIsNameInExpression() & FsRtlIsDbcsInExpression():
As both UNICODE_STRING & ANSI_STRING might not be NULL-termined, don't attempt to read null char.
This fixes potential buffer overruns.
Then it fixes some (all?) 'TempPte.u.Long != 0' assertion failure.
See issue #5923 for more details.
svn path=/trunk/; revision=50904
One-line fix for FsRtlIs*InExpression(). This fixes failing tests, but not overrun.
Added some breaks to reach more quickly the end
svn path=/trunk/; revision=50873
Halfplement (win32 only) ProcessWow64Information case in NtQueryInformationProcess. Patch by Samuel Serapion.
See issue #5916 for more details.
svn path=/trunk/; revision=50831