grub_zalloc() allocates memory for port. And if the allocation for
port->name fails, the function returns NULL without freeing the
previously allocated port memory. This results in a memory leak. To
avoid this, we must free port before returning.

Signed-off-by: Avnish Chouhan <[email protected]>
---
 grub-core/term/ieee1275/serial.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/grub-core/term/ieee1275/serial.c b/grub-core/term/ieee1275/serial.c
index ac2a8f8..b3a8a7c 100644
--- a/grub-core/term/ieee1275/serial.c
+++ b/grub-core/term/ieee1275/serial.c
@@ -236,7 +236,11 @@ add_port (struct ofserial_hash_ent *ent)
                            + grub_strlen (ent->shortest));
   port->elem = ent;
   if (!port->name)
-    return NULL;
+    {
+      grub_free (port);
+      return NULL;
+    }
+
   ptr = grub_stpcpy (port->name, "ieee1275/");
   grub_strcpy (ptr, ent->shortest);
 
-- 
2.47.1


_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to