dcavalca / rpms / grub2

Forked from rpms/grub2 3 years ago
Clone

Blame SOURCES/0311-multiboot2-Fix-memory-leak-if-grub_create_loader_cmd.patch

b1bcb2
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
c4e390
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
c4e390
Date: Fri, 26 Jun 2020 10:51:43 -0400
b1bcb2
Subject: [PATCH] multiboot2: Fix memory leak if grub_create_loader_cmdline()
b1bcb2
 fails
c4e390
c4e390
Fixes: CID 292468
c4e390
c4e390
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
c4e390
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
c4e390
Upstream-commit-id: cd6760b6289
c4e390
---
c4e390
 grub-core/loader/multiboot_mbi2.c | 11 +++++++++--
c4e390
 1 file changed, 9 insertions(+), 2 deletions(-)
c4e390
c4e390
diff --git a/grub-core/loader/multiboot_mbi2.c b/grub-core/loader/multiboot_mbi2.c
c4e390
index 83e8919fa9a..7e01dfb5ee7 100644
c4e390
--- a/grub-core/loader/multiboot_mbi2.c
c4e390
+++ b/grub-core/loader/multiboot_mbi2.c
c4e390
@@ -957,6 +957,7 @@ grub_multiboot_add_module (grub_addr_t start, grub_size_t size,
c4e390
 {
c4e390
   struct module *newmod;
c4e390
   grub_size_t len = 0;
c4e390
+  grub_err_t err;
c4e390
 
c4e390
   newmod = grub_malloc (sizeof (*newmod));
c4e390
   if (!newmod)
c4e390
@@ -975,8 +976,14 @@ grub_multiboot_add_module (grub_addr_t start, grub_size_t size,
c4e390
   newmod->cmdline_size = len;
c4e390
   total_modcmd += ALIGN_UP (len, MULTIBOOT_TAG_ALIGN);
c4e390
 
c4e390
-  grub_create_loader_cmdline (argc, argv, newmod->cmdline,
c4e390
-			      newmod->cmdline_size);
c4e390
+  err = grub_create_loader_cmdline (argc, argv, newmod->cmdline,
c4e390
+				    newmod->cmdline_size);
c4e390
+  if (err)
c4e390
+    {
c4e390
+      grub_free (newmod->cmdline);
c4e390
+      grub_free (newmod);
c4e390
+      return err;
c4e390
+    }
c4e390
 
c4e390
   if (modules_last)
c4e390
     modules_last->next = newmod;