]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
efi: Fix several memory leaks of UEFI handles
authorKhalid Ali <khaliidcaliy@gmail.com>
Mon, 15 Dec 2025 16:59:46 +0000 (16:59 +0000)
committerDaniel Kiper <daniel.kiper@oracle.com>
Sun, 21 Dec 2025 15:41:46 +0000 (16:41 +0100)
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>
grub-core/commands/efi/lsefi.c
grub-core/commands/efi/tpm.c
grub-core/term/efi/serial.c
grub-core/video/efi_gop.c

index 7b8316d4184c8b35a382606b1dc2034c131d1b53..f4c10392dc2a8be276cf13b6ebe88c6cffe51060 100644 (file)
@@ -129,6 +129,7 @@ grub_cmd_lsefi (grub_command_t cmd __attribute__ ((unused)),
 
     }
 
+  grub_free (handles);
   return 0;
 }
 
index 96b5090319e167e5332593a926cb161a950af1db..1c49064034400dd16f5e116b9f32dba22815fac5 100644 (file)
@@ -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;
     }
 
index 5dfd2d86c39b68d8e81325427d85f7340d36d179..e409b8d5e3ac4cd354778e332bac31d78a7860f3 100644 (file)
@@ -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++);
index 9452f5e58797b60dc4389a5eeabe813c3a5710d5..1ad2e709dd4a6d1f5c5ddff4048554a4387f7007 100644 (file)
@@ -94,7 +94,7 @@ check_protocol (void)
   gop_handle = 0;
 
   grub_dprintf ("video", "GOP: no usable mode\n");
-
+  grub_free (handles);
   return 0;
 }