From d9eb7f1536ed6262fc8c6518c6afe6053a450e9d Mon Sep 17 00:00:00 2001 From: Peter Jones 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 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 */ } }