On Thu, Oct 01, 2026 at 03:55:10PM +0200, Heinrich Schuchardt wrote:
> On 9/22/26 16:58, Vincent Stehlé wrote:
> > Add a minimal test for the UEFI Firmware Management Protocol.
(..)
> > +   /* Determine buffer size */
> > +   img_info_size = 0;
> > +   ret = fmp->get_image_info(fmp, &img_info_size, NULL, NULL, NULL, NULL,
> > +                             NULL, NULL);
> > +   if (ret != EFI_BUFFER_TOO_SMALL) {
> > +           efi_st_error("GetImageInfo returned %u\n", (unsigned int)ret);
> > +           goto out;
> > +   }
> 
> This fails if the number of images is 0.
> 
> ERROR: GetImageInfo returned 2 (EFI_INVALID_PARAMETER)
> 
> +struct efi_fw_image fw_images[] = {
> +};
> +
> +struct efi_capsule_update_info update_info = {
> +       .dfu_string = NULL,
> +       .num_images = ARRAY_SIZE(fw_images),
> +       .images = fw_images,
> +};
> 
> This looks like a bug in efi_fill_image_desc_array((). Why does it return
> EFI_INVALID_PARAMETER if the number of images is 0?
> 
> We should just return *img_info_size = 0 and EFI_SUCCESS instead.
> 
> The test should return EFI_ST_SUCCESS in this case.

Hi Heinrich,

Thank you very much for reviewing.

I confirm that I could reproduce this corner case with your changes.

In the end I think the test (v2) itself is fine, as it does pass when I
replace the calls to get_image_info() by the following code:

+       img_info = NULL;
+       desc_ver = EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION;
+       desc_cnt = 0;
+       desc_size = sizeof(struct efi_firmware_image_descriptor);
+       pkg_ver = 0;
+       pkg_ver_name = NULL;

I will try to send a fix for efi_fill_image_desc_array() as you
mentioned, but if you agree that will be separated from this series.

Best regards,
Vincent.

> 
> Best regards
> 
> Heinrich

Reply via email to