From: Khalid Ali Date: Mon, 15 Dec 2025 16:59:46 +0000 (+0000) Subject: efi: Fix several memory leaks of UEFI handles X-Git-Tag: grub-2.14~15 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=0f0899c32985d3ab194f01c367f094cb38bcd55c;p=thirdparty%2Fgrub.git 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 --- 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; }