efibootmgr/backport-get-rid-of-a-memory-leak-of-deleted-boot-entries.patch
2021-06-08 11:40:30 +08:00

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 */
}
}