Rémi Bernon : kernelbase: Convert RtlWalkHeap structure on input too.
Alexandre Julliard
julliard at winehq.org
Thu Jun 2 16:26:09 CDT 2022
Module: wine
Branch: master
Commit: 9af87e2c644ae49e65e2bac446339dd92a77bc08
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9af87e2c644ae49e65e2bac446339dd92a77bc08
Author: Rémi Bernon <rbernon at codeweavers.com>
Date: Wed Jun 1 22:08:34 2022 +0200
kernelbase: Convert RtlWalkHeap structure on input too.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/kernelbase/memory.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c
index 9490626a40a..cac456d01be 100644
--- a/dlls/kernelbase/memory.c
+++ b/dlls/kernelbase/memory.c
@@ -640,9 +640,24 @@ struct rtl_heap_entry
*/
BOOL WINAPI DECLSPEC_HOTPATCH HeapWalk( HANDLE heap, PROCESS_HEAP_ENTRY *entry )
{
- struct rtl_heap_entry rtl_entry = {.lpData = entry->lpData};
+ struct rtl_heap_entry rtl_entry = {0};
NTSTATUS status;
+ if (!entry) return set_ntstatus( STATUS_INVALID_PARAMETER );
+
+ rtl_entry.lpData = entry->lpData;
+ rtl_entry.cbData = entry->cbData;
+ rtl_entry.cbOverhead = entry->cbOverhead;
+ rtl_entry.iRegionIndex = entry->iRegionIndex;
+
+ if (entry->wFlags & PROCESS_HEAP_ENTRY_BUSY)
+ rtl_entry.wFlags |= RTL_HEAP_ENTRY_BUSY;
+ if (entry->wFlags & PROCESS_HEAP_REGION)
+ rtl_entry.wFlags |= RTL_HEAP_ENTRY_REGION;
+ if (entry->wFlags & PROCESS_HEAP_UNCOMMITTED_RANGE)
+ rtl_entry.wFlags |= RTL_HEAP_ENTRY_UNCOMMITTED;
+ memcpy( &rtl_entry.Region, &entry->u.Region, sizeof(entry->u.Region) );
+
if (!(status = RtlWalkHeap( heap, &rtl_entry )))
{
entry->lpData = rtl_entry.lpData;
More information about the wine-cvs
mailing list