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.txt?rev=66958&r1=66957&r2=66958&view=diff
==============================================================================
--- 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/RtlReAllocateHeap.c?rev=66958
==============================================================================
--- 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 <[email protected]>
+ */
+
+#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?rev=66958&r1=66957&r2=66958&view=diff
==============================================================================
--- 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 },
 


Reply via email to