From 0f0899c32985d3ab194f01c367f094cb38bcd55c Mon Sep 17 00:00:00 2001 From: Khalid Ali Date: Mon, 15 Dec 2025 16:59:46 +0000 Subject: [PATCH] efi: Fix several memory leaks of UEFI handles Fix possible and absolute memory leaks of "handles" returned by grub_efi_locate_handle() using grub_malloc(). Signed-off-by: Khalid Ali Reviewed-by: Sudhakar Kuppusamy Reviewed-by: Daniel Kiper --- grub-core/commands/efi/lsefi.c | 1 + grub-core/commands/efi/tpm.c | 2 ++ grub-core/term/efi/serial.c | 4 ++-- grub-core/video/efi_gop.c | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/grub-core/commands/efi/lsefi.c b/grub-core/commands/efi/lsefi.c index 7b8316d41..f4c10392d 100644 --- a/grub-core/commands/efi/lsefi.c +++ b/grub-core/commands/efi/lsefi.c @@ -129,6 +129,7 @@ grub_cmd_lsefi (grub_command_t cmd __attribute__ ((unused)), } + grub_free (handles); return 0; } diff --git a/grub-core/commands/efi/tpm.c b/grub-core/commands/efi/tpm.c index 96b509031..1c4906403 100644 --- a/grub-core/commands/efi/tpm.c +++ b/grub-core/commands/efi/tpm.c @@ -113,6 +113,7 @@ grub_tpm_handle_find (grub_efi_handle_t *tpm_handle, grub_tpm_version = 1; *protocol_version = 1; grub_dprintf ("tpm", "TPM handle Found, version: 1\n"); + grub_free (handles); return 1; } @@ -125,6 +126,7 @@ grub_tpm_handle_find (grub_efi_handle_t *tpm_handle, grub_tpm_version = 2; *protocol_version = 2; grub_dprintf ("tpm", "TPM handle Found, version: 2\n"); + grub_free (handles); return 1; } diff --git a/grub-core/term/efi/serial.c b/grub-core/term/efi/serial.c index 5dfd2d86c..e409b8d5e 100644 --- a/grub-core/term/efi/serial.c +++ b/grub-core/term/efi/serial.c @@ -169,13 +169,13 @@ grub_efiserial_init (void) port = grub_zalloc (sizeof (*port)); if (!port) - return; + break; port->name = grub_malloc (sizeof ("efiXXXXXXXXXXXXXXXXXXXX")); if (!port->name) { grub_free (port); - return; + break; } grub_snprintf (port->name, sizeof ("efiXXXXXXXXXXXXXXXXXXXX"), "efi%d", num_serial++); diff --git a/grub-core/video/efi_gop.c b/grub-core/video/efi_gop.c index 9452f5e58..1ad2e709d 100644 --- a/grub-core/video/efi_gop.c +++ b/grub-core/video/efi_gop.c @@ -94,7 +94,7 @@ check_protocol (void) gop_handle = 0; grub_dprintf ("video", "GOP: no usable mode\n"); - + grub_free (handles); return 0; }