:: commit db69f0d4c389cd124f435df751f30dc20b42aa1e

Mintsuki <mintsuki@protonmail.com> — 2026-01-12 12:40

parents: e8250704e5

host/limine: Validate partition sector count before GPT to MBR conversion

diff --git a/host/limine.c b/host/limine.c
index 8458449b..821e85b5 100644
--- a/host/limine.c
+++ b/host/limine.c
@@ -836,6 +836,13 @@ static int bios_install(int argc, char *argv[]) {
             part_to_conv[part_to_conv_i].lba_end = ENDSWAP(gpt_entry.ending_lba);
             lba2chs(part_to_conv[part_to_conv_i].chs_end, part_to_conv[part_to_conv_i].lba_end);
 
+            if (part_to_conv[part_to_conv_i].lba_end - part_to_conv[part_to_conv_i].lba_start + 1 > UINT32_MAX) {
+                if (!quiet) {
+                    fprintf(stderr, "Sector count of partition %" PRIi64 " is greater than UINT32_MAX, will not convert GPT.\n", i + 1);
+                }
+                goto no_mbr_conv;
+            }
+
             int type = gpt2mbr_type(ENDSWAP(gpt_entry.partition_type_guid[0]),
                                     ENDSWAP(gpt_entry.partition_type_guid[1]));
             if (type == -1) {
tab: 248 wrap: offon