]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
EFI: Populate descriptor_count value only when image_info_size is not zero
authorSughosh Ganu <sughosh.ganu@linaro.org>
Tue, 31 May 2022 07:15:33 +0000 (12:45 +0530)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 4 Jun 2022 06:43:55 +0000 (08:43 +0200)
The GetImageInfo function of the Firmware Mangement Protocol(FMP) gets
called initially to query the size of the image descriptor array that
would have to be allocated. During this call, the rest of the function
arguments, specifically pointers might be passed as NULL. Do not
populate the descriptor_count value before it is known that the call
to GetImageInfo has been made with the allocated buffer for the image
descriptors.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
lib/efi_loader/efi_firmware.c

index fe4e084106d36fec237cd3161386b512eeb83df2..9cdefab41fa18cfebb76f11ad8aedb1325294f4f 100644 (file)
@@ -130,9 +130,6 @@ static efi_status_t efi_fill_image_desc_array(
        struct efi_fw_image *fw_array;
        int i;
 
-       fw_array = update_info.images;
-       *descriptor_count = num_image_type_guids;
-
        total_size = sizeof(*image_info) * num_image_type_guids;
 
        if (*image_info_size < total_size) {
@@ -142,6 +139,8 @@ static efi_status_t efi_fill_image_desc_array(
        }
        *image_info_size = total_size;
 
+       fw_array = update_info.images;
+       *descriptor_count = num_image_type_guids;
        *descriptor_version = EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION;
        *descriptor_size = sizeof(*image_info);
        *package_version = 0xffffffff; /* not supported */