From 21489b4478a72d6c682f24dea80d5ac7790e2692 Mon Sep 17 00:00:00 2001 From: Masahisa Kojima Date: Mon, 29 Jan 2024 11:51:14 +0900 Subject: [PATCH] efi_loader: check efi_get_variable_int return value efi_get_variable_int() may fail, the buffer should be cleared before using it. Signed-off-by: Masahisa Kojima Addresses-Coverity-ID: 478333 ("Error handling issues") --- lib/efi_loader/efi_firmware.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/efi_loader/efi_firmware.c b/lib/efi_loader/efi_firmware.c index 9fd13297a6..ba5aba098c 100644 --- a/lib/efi_loader/efi_firmware.c +++ b/lib/efi_loader/efi_firmware.c @@ -400,18 +400,18 @@ efi_status_t efi_firmware_set_fmp_state_var(struct fmp_state *state, u8 image_in } size = num_banks * sizeof(*var_state); - var_state = calloc(1, size); + var_state = malloc(size); if (!var_state) return EFI_OUT_OF_RESOURCES; /* * GetVariable may fail, EFI_NOT_FOUND is returned if FmpState * variable has not been set yet. - * Ignore the error here since the correct FmpState variable - * is set later. */ - efi_get_variable_int(varname, image_type_id, NULL, &size, var_state, - NULL); + ret = efi_get_variable_int(varname, image_type_id, NULL, &size, + var_state, NULL); + if (ret != EFI_SUCCESS) + memset(var_state, 0, num_banks * sizeof(*var_state)); /* * Only the fw_version is set here.