[PATCH] efi_loader: loosen buffer parameter check in efi_file_read_int
Heinrich Schuchardt
xypron.glpk at gmx.de
Wed Apr 28 15:02:56 CEST 2021
On 28.04.21 14:49, Heinrich Schuchardt wrote:
> On 28.04.21 10:15, Peng Fan (OSS) wrote:
>> From: Peng Fan <peng.fan at nxp.com>
>>
>> This is same issue as https://bugzilla.redhat.com/show_bug.cgi?id=1733817,
>> but that fix was wrongly partial reverted.
>>
>> To Fedora shim loader, when buffer is NULL, a use-case is to call
>> efi_file_read with *buffer_size=0 and buffer=NULL to obtain the needed
An EFI binary cannot directly call efi_file_read(). It calls
EFI_FILE_PROTOCOL.Read().
>> size before doing the actual read.
>>
>> Otherwise, we always met "Could not read \EFI\: Invalid Parameter"
Please, describe the problem in UEFI terms.
>
> The EFI specification does not require this behavior. EDK II does not
> implement it either. See for instance SemihostFileRead(),
> FvSimpleFileSystemRead().
>
> To determine the file size you have to use GetInfo(). Please, fix the
> client code.
>
> Best regards
>
> Heinrich
Please, make it clear in the commit message, please, that this patch is
about reading a *directory entry* and not about reading a file.
Best regards
Heinrich
>
>>
>> Fixes: db12f518edb0("efi_loader: implement non-blocking file services")
>> Signed-off-by: Peng Fan <peng.fan at nxp.com>
>> Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
>> Cc: Stefan Sørensen <stefan.sorensen at spectralink.com>
>> ---
>> lib/efi_loader/efi_file.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/lib/efi_loader/efi_file.c b/lib/efi_loader/efi_file.c
>> index 204105e25a..6b3f5962be 100644
>> --- a/lib/efi_loader/efi_file.c
>> +++ b/lib/efi_loader/efi_file.c
>> @@ -554,7 +554,7 @@ static efi_status_t efi_file_read_int(struct efi_file_handle *this,
>> efi_status_t ret = EFI_SUCCESS;
>> u64 bs;
>>
>> - if (!this || !buffer_size || !buffer)
>> + if (!this || !buffer_size)
>> return EFI_INVALID_PARAMETER;
>>
>> bs = *buffer_size;
>>
>
More information about the U-Boot
mailing list