From 16f616a8de0e2a5a9fdaae6ba362154d3aa1c65e Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 9 Jun 2010 21:53:42 +0000 Subject: [PATCH] [NTOSKRNL] - Set the resource list pointer to NULL after we free it - Fixes a double-free issue in the resource conflict resolution code svn path=/trunk/; revision=47725 --- reactos/ntoskrnl/io/pnpmgr/pnpres.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/reactos/ntoskrnl/io/pnpmgr/pnpres.c b/reactos/ntoskrnl/io/pnpmgr/pnpres.c index 699e7970eed..2e93929f0b0 100644 --- a/reactos/ntoskrnl/io/pnpmgr/pnpres.c +++ b/reactos/ntoskrnl/io/pnpmgr/pnpres.c @@ -243,6 +243,7 @@ IopCreateResourceListFromRequirements( if (ReqDesc->Option == 0) { ExFreePool(*ResourceList); + *ResourceList = NULL; return STATUS_CONFLICTING_ADDRESSES; } } @@ -258,6 +259,7 @@ IopCreateResourceListFromRequirements( if (ReqDesc->Option == 0) { ExFreePool(*ResourceList); + *ResourceList = NULL; return STATUS_CONFLICTING_ADDRESSES; } } @@ -273,6 +275,7 @@ IopCreateResourceListFromRequirements( if (ReqDesc->Option == 0) { ExFreePool(*ResourceList); + *ResourceList = NULL; return STATUS_CONFLICTING_ADDRESSES; } } @@ -288,6 +291,7 @@ IopCreateResourceListFromRequirements( if (ReqDesc->Option == 0) { ExFreePool(*ResourceList); + *ResourceList = NULL; return STATUS_CONFLICTING_ADDRESSES; } } @@ -302,6 +306,7 @@ IopCreateResourceListFromRequirements( if (ReqDesc->Option == 0) { ExFreePool(*ResourceList); + *ResourceList = NULL; return STATUS_CONFLICTING_ADDRESSES; } } @@ -852,6 +857,7 @@ IopAssignDeviceResources( { DPRINT1("Boot resources for %wZ cause a resource conflict!\n", &DeviceNode->InstancePath); ExFreePool(DeviceNode->ResourceList); + DeviceNode->ResourceList = NULL; } }