You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
From 0f008fb687338498ee7d84980a7aca6aa4dec919 Mon Sep 17 00:00:00 2001 |
|
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
|
Date: Fri, 26 Jun 2020 10:51:43 -0400 |
|
Subject: [PATCH 311/336] multiboot2: Fix memory leak if |
|
grub_create_loader_cmdline() fails |
|
|
|
Fixes: CID 292468 |
|
|
|
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> |
|
Upstream-commit-id: cd6760b6289 |
|
--- |
|
grub-core/loader/multiboot_mbi2.c | 11 +++++++++-- |
|
1 file changed, 9 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/grub-core/loader/multiboot_mbi2.c b/grub-core/loader/multiboot_mbi2.c |
|
index 83e8919fa9a..7e01dfb5ee7 100644 |
|
--- a/grub-core/loader/multiboot_mbi2.c |
|
+++ b/grub-core/loader/multiboot_mbi2.c |
|
@@ -957,6 +957,7 @@ grub_multiboot_add_module (grub_addr_t start, grub_size_t size, |
|
{ |
|
struct module *newmod; |
|
grub_size_t len = 0; |
|
+ grub_err_t err; |
|
|
|
newmod = grub_malloc (sizeof (*newmod)); |
|
if (!newmod) |
|
@@ -975,8 +976,14 @@ grub_multiboot_add_module (grub_addr_t start, grub_size_t size, |
|
newmod->cmdline_size = len; |
|
total_modcmd += ALIGN_UP (len, MULTIBOOT_TAG_ALIGN); |
|
|
|
- grub_create_loader_cmdline (argc, argv, newmod->cmdline, |
|
- newmod->cmdline_size); |
|
+ err = grub_create_loader_cmdline (argc, argv, newmod->cmdline, |
|
+ newmod->cmdline_size); |
|
+ if (err) |
|
+ { |
|
+ grub_free (newmod->cmdline); |
|
+ grub_free (newmod); |
|
+ return err; |
|
+ } |
|
|
|
if (modules_last) |
|
modules_last->next = newmod; |
|
-- |
|
2.26.2 |
|
|
|
|