:: commit 17c184ca257a7916147283c05cb888926d13f717

mintsuki <mintsuki@protonmail.com> — 2021-03-17 17:53

parents: 0a1dfa766e

limine-install: Zero out partition entries BEFORE calculating crc32

diff --git a/limine-install/limine-install b/limine-install/limine-install
index ccc1519d..ba6be7cf 100755
Binary files a/limine-install/limine-install and b/limine-install/limine-install differ
diff --git a/limine-install/limine-install.c b/limine-install/limine-install.c
index 3f18ad78..2fac6602 100644
--- a/limine-install/limine-install.c
+++ b/limine-install/limine-install.c
@@ -407,6 +407,15 @@ int main(int argc, char *argv[]) {
 
             fprintf(stderr, "New maximum count of partition entries: %zu.\n", new_partition_entry_count);
 
+            // Zero out unused partitions
+            void *empty = calloc(1, gpt_header.size_of_partition_entry);
+            for (size_t i = max_partition_entry_used + 1; i < new_partition_entry_count; i++) {
+                device_write(empty,
+                    gpt_header.partition_entry_lba * lb_size + i * gpt_header.size_of_partition_entry,
+                    gpt_header.size_of_partition_entry);
+            }
+            free(empty);
+
             uint8_t *partition_array =
                 malloc(new_partition_entry_count * gpt_header.size_of_partition_entry);
             if (partition_array == NULL) {
@@ -424,15 +433,6 @@ int main(int argc, char *argv[]) {
 
             free(partition_array);
 
-            // Zero out unused partitions
-            void *empty = calloc(1, gpt_header.size_of_partition_entry);
-            for (size_t i = max_partition_entry_used + 1; i < new_partition_entry_count; i++) {
-                device_write(empty,
-                    gpt_header.partition_entry_lba * lb_size + i * gpt_header.size_of_partition_entry,
-                    gpt_header.size_of_partition_entry);
-            }
-            free(empty);
-
             gpt_header.partition_entry_array_crc32 = crc32_partition_array;
             gpt_header.number_of_partition_entries = new_partition_entry_count;
             gpt_header.crc32 = 0;
tab: 248 wrap: offon