[RTL]
authorThomas Faber <thomas.faber@reactos.org>
Fri, 19 May 2017 18:22:46 +0000 (18:22 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Fri, 19 May 2017 18:22:46 +0000 (18:22 +0000)
- Do not change RTL_HANDLE_TABLE::CommittedHandles when committing a new page of handle entries. This value must always point to the beginning of the allocation, to correctly track the entire committed range. Fixes LibreOffice Writer (and ntdll_apitest) crash.
CORE-13271 #resolve

svn path=/trunk/; revision=74599

reactos/sdk/lib/rtl/handle.c

index 99ec593..5c24199 100644 (file)
@@ -89,6 +89,7 @@ RtlAllocateHandle(
                 return NULL;
 
             /* Update handle array pointers */
+            HandleTable->CommittedHandles = (PRTL_HANDLE_TABLE_ENTRY)ArrayPointer;
             HandleTable->UnCommittedHandles = (PRTL_HANDLE_TABLE_ENTRY)ArrayPointer;
             HandleTable->MaxReservedHandles = (PRTL_HANDLE_TABLE_ENTRY)((ULONG_PTR)ArrayPointer + ArraySize);
         }
@@ -107,7 +108,6 @@ RtlAllocateHandle(
 
         /* Update handle array pointers */
         HandleTable->FreeHandles = (PRTL_HANDLE_TABLE_ENTRY)ArrayPointer;
-        HandleTable->CommittedHandles = (PRTL_HANDLE_TABLE_ENTRY)ArrayPointer;
         HandleTable->UnCommittedHandles = (PRTL_HANDLE_TABLE_ENTRY)((ULONG_PTR)ArrayPointer + ArraySize);
 
         /* Calculate the number of entries we can store in the array */