[PATCH 1/1] efi_loader: efi_dp_part_node check dp_alloc return value
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Thu Oct 6 14:18:33 CEST 2022
On 10/6/22 13:59, Ilias Apalodimas wrote:
> On Thu, 6 Oct 2022 at 14:45, Heinrich Schuchardt
> <heinrich.schuchardt at canonical.com> wrote:
>>
>> dp_alloc() may return NULL. This needs to be caught.
>>
>> Fixes: 98d48bdf415e ("efi_loader: provide a function to create a partition node")
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>> ---
>> lib/efi_loader/efi_device_path.c | 3 ++-
>> lib/efi_loader/efi_disk.c | 5 +++++
>> 2 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
>> index ebffb77122..acae007f26 100644
>> --- a/lib/efi_loader/efi_device_path.c
>> +++ b/lib/efi_loader/efi_device_path.c
>> @@ -936,7 +936,8 @@ struct efi_device_path *efi_dp_part_node(struct blk_desc *desc, int part)
>> dpsize = sizeof(struct efi_device_path_hard_drive_path);
>> buf = dp_alloc(dpsize);
>>
>> - dp_part_node(buf, desc, part);
>> + if (buf)
>> + dp_part_node(buf, desc, part);
>>
>> return buf;
>> }
>> diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
>> index 39ea1a68a6..79b28097b6 100644
>> --- a/lib/efi_loader/efi_disk.c
>> +++ b/lib/efi_loader/efi_disk.c
>> @@ -415,6 +415,11 @@ static efi_status_t efi_disk_add_dev(
>> struct efi_handler *handler;
>> void *protocol_interface;
>>
>> + if (!node) {
>> + ret = EFI_OUT_OF_RESOURCES;
>> + goto error;
>> + }
>
> There's a diskobj that has been allocated here and a handle we added.
> We should clean those up too
512 error:
513 efi_delete_handle(&diskobj->header);
What is missing here?
Best regards
Heinrich
More information about the U-Boot
mailing list