[STORPORT] Fix resource list size calculation
authorEric Kohl <eric.kohl@reactos.org>
Sun, 2 Jun 2019 12:23:59 +0000 (14:23 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Sun, 2 Jun 2019 12:24:35 +0000 (14:24 +0200)
drivers/storage/port/storport/misc.c

index 1c9c73a..2006827 100644 (file)
@@ -102,7 +102,6 @@ GetResourceListSize(
     PCM_RESOURCE_LIST ResourceList)
 {
     PCM_FULL_RESOURCE_DESCRIPTOR Descriptor;
-    INT i;
     ULONG Size;
 
     DPRINT1("GetResourceListSize(%p)\n", ResourceList);
@@ -117,20 +116,12 @@ GetResourceListSize(
     DPRINT1("ResourceList->Count: %lu\n", ResourceList->Count);
 
     Descriptor = &ResourceList->List[0];
-    for (i = 0; i < ResourceList->Count; i++)
-    {
-        /* Process resources in CM_FULL_RESOURCE_DESCRIPTOR block number ix. */
-
-        DPRINT1("PartialResourceList->Count: %lu\n", Descriptor->PartialResourceList.Count);
 
-        /* Add the size of the current full descriptor */
-        Size += sizeof(CM_FULL_RESOURCE_DESCRIPTOR) + 
-                (Descriptor->PartialResourceList.Count - 1) * sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR);
+    DPRINT1("PartialResourceList->Count: %lu\n", Descriptor->PartialResourceList.Count);
 
-        /* Advance to next CM_FULL_RESOURCE_DESCRIPTOR block in memory. */
-        Descriptor = (PCM_FULL_RESOURCE_DESCRIPTOR)(Descriptor->PartialResourceList.PartialDescriptors + 
-                                                    Descriptor->PartialResourceList.Count);
-    }
+    /* Add the size of the partial descriptors */
+    if (Descriptor->PartialResourceList.Count > 1)
+        Size += (Descriptor->PartialResourceList.Count - 1) * sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR);
 
     DPRINT1("Size: 0x%lx (%u)\n", Size, Size);
     return Size;