From: Masahisa Kojima Date: Mon, 29 Jan 2024 02:51:14 +0000 (+0900) Subject: efi_loader: check efi_get_variable_int return value X-Git-Url: http://git.dujemihanovic.xyz/html/index.html?a=commitdiff_plain;h=21489b4478a72d6c682f24dea80d5ac7790e2692;p=u-boot.git 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") --- 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.