[KS]
authorThomas Faber <thomas.faber@reactos.org>
Mon, 20 Feb 2017 11:35:24 +0000 (11:35 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Mon, 20 Feb 2017 11:35:24 +0000 (11:35 +0000)
- Avoid leaking AllocatorFraming in KsCreateDefaultAllocatorEx. Patch by Sebastian Gasiorek
CORE-12797 #resolve

svn path=/trunk/; revision=73856

reactos/drivers/ksfilter/ks/allocators.c

index 9ffb0c4..2f8ee11 100644 (file)
@@ -593,20 +593,27 @@ KsCreateDefaultAllocatorEx(
 
     /* check the valid file alignment */
     if (AllocatorFraming->FileAlignment > (PAGE_SIZE-1))
+    {
+        FreeItem(AllocatorFraming);
         return STATUS_INVALID_PARAMETER;
+    }
 
     /* allocate allocator struct */
     Allocator = AllocateItem(NonPagedPool, sizeof(ALLOCATOR));
     if (!Allocator)
+    {
+        FreeItem(AllocatorFraming);
         return STATUS_INSUFFICIENT_RESOURCES;
+    }
 
     /* allocate object header */
     
     Status = KsAllocateObjectHeader((KSOBJECT_HEADER*)&Allocator->Header, 0, NULL, Irp, &DispatchTable);
     if (!NT_SUCCESS(Status))
     {
-         FreeItem(Allocator);
-         return Status;
+        FreeItem(AllocatorFraming);
+        FreeItem(Allocator);
+        return Status;
     }
 
     /* set allocator type in object header */
@@ -652,6 +659,7 @@ KsCreateDefaultAllocatorEx(
 
     /* backup allocator framing */
     RtlMoveMemory(&Allocator->Status.Framing, AllocatorFraming, sizeof(KSALLOCATOR_FRAMING));
+    FreeItem(AllocatorFraming);
 
     return Status;
 }