protos/multiboot: Allow menu recovery on overflow panics
diff --git a/common/protos/multiboot1.c b/common/protos/multiboot1.c
index 707fc422..08d95f56 100644
--- a/common/protos/multiboot1.c
+++ b/common/protos/multiboot1.c
@@ -35,7 +35,7 @@ static size_t get_multiboot1_info_size(
size_t modules_count, size_t modules_cmdlines_size,
uint32_t section_entry_size, uint32_t section_num
) {
-#define OVERFLOW panic(false, "multiboot1: info size overflow")
+#define OVERFLOW panic(true, "multiboot1: info size overflow")
return ALIGN_UP(sizeof(struct multiboot1_info), 16, OVERFLOW) +
ALIGN_UP(strlen(cmdline) + 1, 16, OVERFLOW) +
ALIGN_UP(sizeof(LIMINE_BRAND), 16, OVERFLOW) +
@@ -48,7 +48,7 @@ static size_t get_multiboot1_info_size(
static void *mb1_info_alloc(void **mb1_info_raw, size_t size) {
void *ret = *mb1_info_raw;
- *mb1_info_raw += ALIGN_UP(size, 16, panic(false, "multiboot: info alloc overflow"));
+ *mb1_info_raw += ALIGN_UP(size, 16, panic(true, "multiboot: info alloc overflow"));
return ret;
}
@@ -191,7 +191,7 @@ noreturn void multiboot1_load(char *config, char *cmdline) {
char *module_cmdline = conf_tuple.value2;
if (!module_cmdline) module_cmdline = "";
- modules_cmdlines_size += ALIGN_UP(strlen(module_cmdline) + 1, 16, panic(false, "multiboot: info size overflow"));
+ modules_cmdlines_size += ALIGN_UP(strlen(module_cmdline) + 1, 16, panic(true, "multiboot: info size overflow"));
}
size_t mb1_info_size = get_multiboot1_info_size(
diff --git a/common/protos/multiboot2.c b/common/protos/multiboot2.c
index a0c072b1..b7ec894a 100644
--- a/common/protos/multiboot2.c
+++ b/common/protos/multiboot2.c
@@ -40,7 +40,7 @@ static size_t get_multiboot2_info_size(
uint32_t section_entry_size, uint32_t section_num,
uint32_t smbios_tag_size
) {
-#define OVERFLOW panic(false, "multiboot2: info size overflow")
+#define OVERFLOW panic(true, "multiboot2: info size overflow")
return ALIGN_UP(sizeof(struct multiboot2_start_tag), MULTIBOOT_TAG_ALIGN, OVERFLOW) +
ALIGN_UP(sizeof(struct multiboot_tag_string) + strlen(cmdline) + 1, MULTIBOOT_TAG_ALIGN, OVERFLOW) +
ALIGN_UP(sizeof(struct multiboot_tag_string) + sizeof(LIMINE_BRAND), MULTIBOOT_TAG_ALIGN, OVERFLOW) +
@@ -69,7 +69,7 @@ static size_t get_multiboot2_info_size(
}
#define append_tag(P, TAG) do { \
- (P) += ALIGN_UP((TAG)->size, MULTIBOOT_TAG_ALIGN, panic(false, "multiboot2: tag size overflow")); \
+ (P) += ALIGN_UP((TAG)->size, MULTIBOOT_TAG_ALIGN, panic(true, "multiboot2: tag size overflow")); \
} while (0)
noreturn void multiboot2_load(char *config, char* cmdline) {
@@ -455,7 +455,7 @@ reloc_fail:
char *module_cmdline = conf_tuple.value2;
if (!module_cmdline) module_cmdline = "";
- modules_size += ALIGN_UP(sizeof(struct multiboot_tag_module) + strlen(module_cmdline) + 1, MULTIBOOT_TAG_ALIGN, panic(false, "multiboot2: modules size overflow"));
+ modules_size += ALIGN_UP(sizeof(struct multiboot_tag_module) + strlen(module_cmdline) + 1, MULTIBOOT_TAG_ALIGN, panic(true, "multiboot2: modules size overflow"));
}
struct smbios_entry_point_32* smbios_entry_32 = NULL;
@@ -466,9 +466,9 @@ reloc_fail:
uint32_t smbios_tag_size = 0;
if (smbios_entry_32 != NULL)
- smbios_tag_size += ALIGN_UP(sizeof(struct multiboot_tag_smbios) + smbios_entry_32->length, MULTIBOOT_TAG_ALIGN, panic(false, "multiboot2: tag size overflow"));
+ smbios_tag_size += ALIGN_UP(sizeof(struct multiboot_tag_smbios) + smbios_entry_32->length, MULTIBOOT_TAG_ALIGN, panic(true, "multiboot2: tag size overflow"));
if (smbios_entry_64 != NULL)
- smbios_tag_size += ALIGN_UP(sizeof(struct multiboot_tag_smbios) + smbios_entry_64->length, MULTIBOOT_TAG_ALIGN, panic(false, "multiboot2: tag size overflow"));
+ smbios_tag_size += ALIGN_UP(sizeof(struct multiboot_tag_smbios) + smbios_entry_64->length, MULTIBOOT_TAG_ALIGN, panic(true, "multiboot2: tag size overflow"));
size_t mb2_info_size = get_multiboot2_info_size(
cmdline,
