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/RtlReAlloc…
==============================================================================
--- 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(a)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 },