diff mbox series

[1/1] efi_loader: efidebug, avoid illegal memory access

Message ID 20200429182750.25328-1-xypron.glpk@gmx.de
State Accepted
Commit dd9056c06a0557bc08ca986530024568e01ede6f
Headers show
Series [1/1] efi_loader: efidebug, avoid illegal memory access | expand

Commit Message

Heinrich Schuchardt April 29, 2020, 6:27 p.m. UTC
For EFI_PERSISTENT_MEMORY_TYPE the 'efidebug memmap' command produces an
illegal memory access.

* Add the missing descriptive string for EFI_PERSISTENT_MEMORY_TYPE.
* Replace the check for EFI_MAX_MEMORY_TYPE by the ARRAY_SIZE() macro.

Reported-by: Coverity (CID 300336)
Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
---
 cmd/efidebug.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
2.26.2
diff mbox series

Patch

diff --git a/cmd/efidebug.c b/cmd/efidebug.c
index 7ff2ce4ce1..53cb3cbfaf 100644
--- a/cmd/efidebug.c
+++ b/cmd/efidebug.c
@@ -395,6 +395,7 @@  static const char * const efi_mem_type_string[] = {
 	[EFI_MMAP_IO] = "IO",
 	[EFI_MMAP_IO_PORT] = "IO PORT",
 	[EFI_PAL_CODE] = "PAL",
+	[EFI_PERSISTENT_MEMORY_TYPE] = "PERSISTENT",
 };

 static const struct efi_mem_attrs {
@@ -482,7 +483,7 @@  static int do_efi_show_memmap(cmd_tbl_t *cmdtp, int flag,
 	printf("================ %.*s %.*s ==========\n",
 	       EFI_PHYS_ADDR_WIDTH, sep, EFI_PHYS_ADDR_WIDTH, sep);
 	for (i = 0, map = memmap; i < map_size / sizeof(*map); map++, i++) {
-		if (map->type < EFI_MAX_MEMORY_TYPE)
+		if (map->type < ARRAY_SIZE(efi_mem_type_string))
 			type = efi_mem_type_string[map->type];
 		else
 			type = "(unknown)";