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 <khaliidcaliy@gmail.com>
Reviewed-by: Sudhakar Kuppusamy <sudhakar@linux.ibm.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Khalid Ali 2025-12-15 16:59:46 +00:00 committed by Daniel Kiper
parent c477a95519
commit 0f0899c329
4 changed files with 6 additions and 3 deletions

View File

@ -129,6 +129,7 @@ grub_cmd_lsefi (grub_command_t cmd __attribute__ ((unused)),
} }
grub_free (handles);
return 0; return 0;
} }

View File

@ -113,6 +113,7 @@ grub_tpm_handle_find (grub_efi_handle_t *tpm_handle,
grub_tpm_version = 1; grub_tpm_version = 1;
*protocol_version = 1; *protocol_version = 1;
grub_dprintf ("tpm", "TPM handle Found, version: 1\n"); grub_dprintf ("tpm", "TPM handle Found, version: 1\n");
grub_free (handles);
return 1; return 1;
} }
@ -125,6 +126,7 @@ grub_tpm_handle_find (grub_efi_handle_t *tpm_handle,
grub_tpm_version = 2; grub_tpm_version = 2;
*protocol_version = 2; *protocol_version = 2;
grub_dprintf ("tpm", "TPM handle Found, version: 2\n"); grub_dprintf ("tpm", "TPM handle Found, version: 2\n");
grub_free (handles);
return 1; return 1;
} }

View File

@ -169,13 +169,13 @@ grub_efiserial_init (void)
port = grub_zalloc (sizeof (*port)); port = grub_zalloc (sizeof (*port));
if (!port) if (!port)
return; break;
port->name = grub_malloc (sizeof ("efiXXXXXXXXXXXXXXXXXXXX")); port->name = grub_malloc (sizeof ("efiXXXXXXXXXXXXXXXXXXXX"));
if (!port->name) if (!port->name)
{ {
grub_free (port); grub_free (port);
return; break;
} }
grub_snprintf (port->name, sizeof ("efiXXXXXXXXXXXXXXXXXXXX"), grub_snprintf (port->name, sizeof ("efiXXXXXXXXXXXXXXXXXXXX"),
"efi%d", num_serial++); "efi%d", num_serial++);

View File

@ -94,7 +94,7 @@ check_protocol (void)
gop_handle = 0; gop_handle = 0;
grub_dprintf ("video", "GOP: no usable mode\n"); grub_dprintf ("video", "GOP: no usable mode\n");
grub_free (handles);
return 0; return 0;
} }