[ros-diffs] [cgutman] 47725: [NTOSKRNL] - Set the resource list pointer to NULL after we free it - Fixes a double-free issue in the resource conflict resolution code

cgutman at svn.reactos.org cgutman at svn.reactos.org
Wed Jun 9 22:53:43 CET 2010


Author: cgutman
Date: Wed Jun  9 21:53:42 2010
New Revision: 47725

URL: http://svn.reactos.org/svn/reactos?rev=47725&view=rev
Log:
[NTOSKRNL]
- Set the resource list pointer to NULL after we free it
- Fixes a double-free issue in the resource conflict resolution code

Modified:
    trunk/reactos/ntoskrnl/io/pnpmgr/pnpres.c

Modified: trunk/reactos/ntoskrnl/io/pnpmgr/pnpres.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/pnpmgr/pnpres.c?rev=47725&r1=47724&r2=47725&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/io/pnpmgr/pnpres.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/pnpmgr/pnpres.c [iso-8859-1] Wed Jun  9 21:53:42 2010
@@ -243,6 +243,7 @@
                   if (ReqDesc->Option == 0)
                   {
                       ExFreePool(*ResourceList);
+                      *ResourceList = NULL;
                       return STATUS_CONFLICTING_ADDRESSES;
                   }
               }
@@ -258,6 +259,7 @@
                   if (ReqDesc->Option == 0)
                   {
                       ExFreePool(*ResourceList);
+                      *ResourceList = NULL;
                       return STATUS_CONFLICTING_ADDRESSES;
                   }
               }
@@ -273,6 +275,7 @@
                   if (ReqDesc->Option == 0)
                   {
                       ExFreePool(*ResourceList);
+                      *ResourceList = NULL;
                       return STATUS_CONFLICTING_ADDRESSES;
                   }
               }
@@ -288,6 +291,7 @@
                   if (ReqDesc->Option == 0)
                   {
                       ExFreePool(*ResourceList);
+                      *ResourceList = NULL;
                       return STATUS_CONFLICTING_ADDRESSES;
                   }
               }
@@ -302,6 +306,7 @@
                   if (ReqDesc->Option == 0)
                   {
                       ExFreePool(*ResourceList);
+                      *ResourceList = NULL;
                       return STATUS_CONFLICTING_ADDRESSES;
                   }
               }
@@ -852,6 +857,7 @@
       {
           DPRINT1("Boot resources for %wZ cause a resource conflict!\n", &DeviceNode->InstancePath);
           ExFreePool(DeviceNode->ResourceList);
+          DeviceNode->ResourceList = NULL;
       }
    }
 




More information about the Ros-diffs mailing list