diff mbox series

[v2] efi_loader: check efi_get_variable_int return value

Message ID 20240129025114.1294749-1-masahisa.kojima@linaro.org
State Accepted
Commit 21489b4478a72d6c682f24dea80d5ac7790e2692
Headers show
Series [v2] efi_loader: check efi_get_variable_int return value | expand

Commit Message

Masahisa Kojima Jan. 29, 2024, 2:51 a.m. UTC
efi_get_variable_int() may fail, the buffer should be
cleared before using it.

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Addresses-Coverity-ID: 478333 ("Error handling issues")
---
Changes in v2:
- use malloc instead of calloc

 lib/efi_loader/efi_firmware.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
diff mbox series

Patch

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.