Author: tfaber Date: Sun Mar 29 14:07:00 2015 New Revision: 66958
URL: http://svn.reactos.org/svn/reactos?rev=66958&view=rev Log: [NTDLL_APITEST] - Add a test for RtlReAllocateHeap -- shows that it doesn't handle allocations larger than 0x7f000 correctly in ROS CORE-9441
Added: trunk/rostests/apitests/ntdll/RtlReAllocateHeap.c (with props) Modified: trunk/rostests/apitests/ntdll/CMakeLists.txt trunk/rostests/apitests/ntdll/testlist.c
Modified: trunk/rostests/apitests/ntdll/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/CMakeLists.... ============================================================================== --- trunk/rostests/apitests/ntdll/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/apitests/ntdll/CMakeLists.txt [iso-8859-1] Sun Mar 29 14:07:00 2015 @@ -27,6 +27,7 @@ RtlGetLongestNtPathLength.c RtlInitializeBitMap.c RtlMemoryStream.c + RtlReAllocateHeap.c StackOverflow.c SystemInfo.c Timer.c
Added: trunk/rostests/apitests/ntdll/RtlReAllocateHeap.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/RtlReAlloca... ============================================================================== --- trunk/rostests/apitests/ntdll/RtlReAllocateHeap.c (added) +++ trunk/rostests/apitests/ntdll/RtlReAllocateHeap.c [iso-8859-1] Sun Mar 29 14:07:00 2015 @@ -0,0 +1,78 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory + * PURPOSE: Test for RtlReAllocateHeap + * PROGRAMMERS: Thomas Faber thomas.faber@reactos.org + */ + +#include <apitest.h> + +#define WIN32_NO_STATUS +#include <ndk/rtlfuncs.h> + +static +BOOLEAN +CheckBuffer( + PVOID Buffer, + SIZE_T Size, + UCHAR Value) +{ + PUCHAR Array = Buffer; + SIZE_T i; + + for (i = 0; i < Size; i++) + if (Array[i] != Value) + { + trace("Expected %x, found %x at offset %lu\n", Value, Array[i], (ULONG)i); + return FALSE; + } + return TRUE; +} + +START_TEST(RtlReAllocateHeap) +{ + PUCHAR Buffer = NULL; + PUCHAR NewBuffer; + SIZE_T OldSize = 0; + SIZE_T Size; + + OldSize = 0x100; + Buffer = RtlReAllocateHeap(RtlGetProcessHeap(), + HEAP_ZERO_MEMORY, + NULL, + OldSize); + ok(Buffer == NULL, "RtlReAllocateHeap succeeded for NULL\n"); + if (Buffer) + RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer); + + Buffer = RtlAllocateHeap(RtlGetProcessHeap(), + HEAP_ZERO_MEMORY, + OldSize); + if (!Buffer) + { + skip("RtlAllocateHeap failed for size %lu\n", OldSize); + return; + } + ok(CheckBuffer(Buffer, OldSize, 0), "HEAP_ZERO_MEMORY not respected for 0x%lx\n", OldSize); + + for (Size = 0x78000; Size < 0x90000; Size += 0x100) + { + RtlFillMemory(Buffer, OldSize, 0x7a); + NewBuffer = RtlReAllocateHeap(RtlGetProcessHeap(), + HEAP_ZERO_MEMORY, + Buffer, + Size); + if (!NewBuffer) + { + skip("RtlReAllocateHeap failed for size %lu\n", Size); + break; + } + Buffer = NewBuffer; + ok_hex(RtlSizeHeap(RtlGetProcessHeap(), 0, Buffer), Size); + ok(CheckBuffer(Buffer, OldSize, 0x7a), "CheckBuffer failed at size 0x%lx -> 0x%lx\n", OldSize, Size); + ok(CheckBuffer(Buffer + OldSize, Size - OldSize, 0), "HEAP_ZERO_MEMORY not respected for 0x%lx -> 0x%lx\n", OldSize, Size); + OldSize = Size; + } + RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer); +} +
Propchange: trunk/rostests/apitests/ntdll/RtlReAllocateHeap.c ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/rostests/apitests/ntdll/testlist.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/testlist.c?... ============================================================================== --- trunk/rostests/apitests/ntdll/testlist.c [iso-8859-1] (original) +++ trunk/rostests/apitests/ntdll/testlist.c [iso-8859-1] Sun Mar 29 14:07:00 2015 @@ -31,6 +31,7 @@ extern void func_RtlGetLongestNtPathLength(void); extern void func_RtlInitializeBitMap(void); extern void func_RtlMemoryStream(void); +extern void func_RtlReAllocateHeap(void); extern void func_StackOverflow(void); extern void func_TimerResolution(void);
@@ -64,6 +65,7 @@ { "RtlGetLongestNtPathLength", func_RtlGetLongestNtPathLength }, { "RtlInitializeBitMap", func_RtlInitializeBitMap }, { "RtlMemoryStream", func_RtlMemoryStream }, + { "RtlReAllocateHeap", func_RtlReAllocateHeap }, { "StackOverflow", func_StackOverflow }, { "TimerResolution", func_TimerResolution },