protos: Reduce protocol side MEMMAP_MAX values
diff --git a/common/mm/pmm.h b/common/mm/pmm.h
index c27e6a9f..989e9fde 100644
--- a/common/mm/pmm.h
+++ b/common/mm/pmm.h
@@ -22,12 +22,6 @@ struct memmap_entry {
#define MEMMAP_FRAMEBUFFER 0x1002
#define MEMMAP_EFI_RECLAIMABLE 0x2000
-#if defined (BIOS)
-# define MEMMAP_MAX 256
-#elif defined (UEFI)
-# define MEMMAP_MAX 1024
-#endif
-
struct meminfo {
size_t uppermem;
size_t lowermem;
diff --git a/common/protos/limine.c b/common/protos/limine.c
index 0c0a8669..ce112b2f 100644
--- a/common/protos/limine.c
+++ b/common/protos/limine.c
@@ -34,6 +34,8 @@
#define MAX_REQUESTS 128
+#define MEMMAP_MAX 256
+
static int paging_mode;
static uint64_t get_hhdm_span_top(int base_revision) {
diff --git a/common/protos/multiboot1.c b/common/protos/multiboot1.c
index ffd8a031..36a276d2 100644
--- a/common/protos/multiboot1.c
+++ b/common/protos/multiboot1.c
@@ -25,6 +25,8 @@
#define LIMINE_BRAND "Limine " LIMINE_VERSION
+#define MEMMAP_MAX 256
+
// Returns the size required to store the multiboot info.
static size_t get_multiboot1_info_size(
char *cmdline,
@@ -415,6 +417,10 @@ skip_modeset:;
size_t mb_mmap_count;
struct memmap_entry *raw_memmap = get_raw_memmap(&mb_mmap_count);
+ if (mb_mmap_count > MEMMAP_MAX) {
+ panic(false, "multiboot1: Too many memory map entries.");
+ }
+
size_t mb_mmap_len = mb_mmap_count * sizeof(struct multiboot1_mmap_entry);
struct multiboot1_mmap_entry *mmap = mb1_info_alloc(&mb1_info_raw, mb_mmap_len);
diff --git a/common/protos/multiboot2.c b/common/protos/multiboot2.c
index e5f085f6..ca9fb910 100644
--- a/common/protos/multiboot2.c
+++ b/common/protos/multiboot2.c
@@ -28,6 +28,9 @@
#define LIMINE_BRAND "Limine " LIMINE_VERSION
+#define MEMMAP_MAX 256
+#define EFI_MEMMAP_MAX 1024
+
/// Returns the size required to store the multiboot2 info.
static size_t get_multiboot2_info_size(
char *cmdline,
@@ -48,7 +51,7 @@ static size_t get_multiboot2_info_size(
ALIGN_UP(sizeof(struct multiboot_tag_basic_meminfo), MULTIBOOT_TAG_ALIGN) + // basic memory info
ALIGN_UP(sizeof(struct multiboot_tag_mmap) + sizeof(struct multiboot_mmap_entry) * MEMMAP_MAX, MULTIBOOT_TAG_ALIGN) + // MMAP
#if defined (UEFI)
- ALIGN_UP(sizeof(struct multiboot_tag_efi_mmap) + (efi_desc_size * MEMMAP_MAX), MULTIBOOT_TAG_ALIGN) + // EFI MMAP
+ ALIGN_UP(sizeof(struct multiboot_tag_efi_mmap) + (efi_desc_size * EFI_MEMMAP_MAX), MULTIBOOT_TAG_ALIGN) + // EFI MMAP
#if defined (__i386__)
ALIGN_UP(sizeof(struct multiboot_tag_efi32), MULTIBOOT_TAG_ALIGN) + // EFI system table 32
ALIGN_UP(sizeof(struct multiboot_tag_efi32_ih), MULTIBOOT_TAG_ALIGN) + // EFI image handle 32
@@ -862,7 +865,7 @@ skip_modeset:;
//////////////////////////////////////////////
#if defined (UEFI)
{
- if ((efi_mmap_size / efi_desc_size) > MEMMAP_MAX) {
+ if ((efi_mmap_size / efi_desc_size) > EFI_MEMMAP_MAX) {
panic(false, "multiboot2: too many EFI memory map entries");
}
