45 lines
1.3 KiB
Diff
45 lines
1.3 KiB
Diff
|
|
From d9eb7f1536ed6262fc8c6518c6afe6053a450e9d Mon Sep 17 00:00:00 2001
|
||
|
|
From: Peter Jones <pjones@redhat.com>
|
||
|
|
Date: Tue, 28 May 2019 17:00:31 -0400
|
||
|
|
Subject: [PATCH] Get rid of a memory leak of deleted boot entries.
|
||
|
|
|
||
|
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||
|
|
|
||
|
|
Conflict:NA
|
||
|
|
Reference:https://github.com/rhboot/efibootmgr/commit/d9eb7f1536ed6262fc8c6518c6afe6053a450e9d
|
||
|
|
---
|
||
|
|
src/efibootmgr.c | 9 ++++++---
|
||
|
|
1 file changed, 6 insertions(+), 3 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/src/efibootmgr.c b/src/efibootmgr.c
|
||
|
|
index 19a6edc..afcfc77 100644
|
||
|
|
--- a/src/efibootmgr.c
|
||
|
|
+++ b/src/efibootmgr.c
|
||
|
|
@@ -106,13 +106,12 @@ read_vars(char **namelist,
|
||
|
|
|
||
|
|
for (i=0; namelist[i] != NULL; i++) {
|
||
|
|
if (namelist[i]) {
|
||
|
|
- entry = malloc(sizeof(var_entry_t));
|
||
|
|
+ entry = calloc(1, sizeof(var_entry_t));
|
||
|
|
if (!entry) {
|
||
|
|
- efi_error("malloc(%zd) failed",
|
||
|
|
+ efi_error("calloc(1, %zd) failed",
|
||
|
|
sizeof(var_entry_t));
|
||
|
|
goto err;
|
||
|
|
}
|
||
|
|
- memset(entry, 0, sizeof(var_entry_t));
|
||
|
|
|
||
|
|
rc = efi_get_variable(EFI_GLOBAL_GUID, namelist[i],
|
||
|
|
&entry->data, &entry->data_size,
|
||
|
|
@@ -611,6 +610,10 @@ delete_var(const char *prefix, uint16_t num)
|
||
|
|
return rc;
|
||
|
|
}
|
||
|
|
list_del(&(entry->list));
|
||
|
|
+ free(entry->name);
|
||
|
|
+ free(entry->data);
|
||
|
|
+ memset(entry, 0, sizeof(*entry));
|
||
|
|
+ free(entry);
|
||
|
|
break; /* short-circuit since it was found */
|
||
|
|
}
|
||
|
|
}
|