[USETUP]: Fix the primary/extended partitions creation checks introduced in r63392...
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Tue, 9 May 2017 22:09:06 +0000 (22:09 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Tue, 9 May 2017 22:09:06 +0000 (22:09 +0000)
Otherwise with the old (broken) checks, we allowed creating more than 4 partitions, and then we overflowed over memory and corrupted the partition list structures.

svn path=/trunk/; revision=74516

reactos/base/setup/usetup/partlist.c

index 738bd73..300e07e 100644 (file)
@@ -3550,8 +3550,8 @@ PrimaryPartitionCreationChecks(
     if (PartEntry->IsPartitioned == TRUE)
         return ERROR_NEW_PARTITION;
 
     if (PartEntry->IsPartitioned == TRUE)
         return ERROR_NEW_PARTITION;
 
-    /* Fail if there are more than 4 partitions in the list */
-    if (GetPrimaryPartitionCount(DiskEntry) > 4)
+    /* Fail if there are already 4 primary partitions in the list */
+    if (GetPrimaryPartitionCount(DiskEntry) >= 4)
         return ERROR_PARTITION_TABLE_FULL;
 
     return ERROR_SUCCESS;
         return ERROR_PARTITION_TABLE_FULL;
 
     return ERROR_SUCCESS;
@@ -3572,8 +3572,8 @@ ExtendedPartitionCreationChecks(
     if (PartEntry->IsPartitioned == TRUE)
         return ERROR_NEW_PARTITION;
 
     if (PartEntry->IsPartitioned == TRUE)
         return ERROR_NEW_PARTITION;
 
-    /* Fail if there are more than 4 partitions in the list */
-    if (GetPrimaryPartitionCount(DiskEntry) > 4)
+    /* Fail if there are already 4 primary partitions in the list */
+    if (GetPrimaryPartitionCount(DiskEntry) >= 4)
         return ERROR_PARTITION_TABLE_FULL;
 
     /* Fail if there is another extended partition in the list */
         return ERROR_PARTITION_TABLE_FULL;
 
     /* Fail if there is another extended partition in the list */