efi_loader: fix efi_get_child_controllers()

Don't call calloc(0, ..).
Consider return value of efi_get_child_controllers().

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
Heinrich Schuchardt 2020-07-07 04:21:26 +02:00
parent 39a75f5af1
commit 1047c6e23c
1 changed files with 8 additions and 4 deletions

View File

@ -3459,6 +3459,8 @@ static efi_status_t efi_get_child_controllers(
* the buffer will be too large. But that does not harm.
*/
*number_of_children = 0;
if (!count)
return EFI_SUCCESS;
*child_handle_buffer = calloc(count, sizeof(efi_handle_t));
if (!*child_handle_buffer)
return EFI_OUT_OF_RESOURCES;
@ -3536,10 +3538,12 @@ static efi_status_t EFIAPI efi_disconnect_controller(
number_of_children = 1;
child_handle_buffer = &child_handle;
} else {
efi_get_child_controllers(efiobj,
driver_image_handle,
&number_of_children,
&child_handle_buffer);
r = efi_get_child_controllers(efiobj,
driver_image_handle,
&number_of_children,
&child_handle_buffer);
if (r != EFI_SUCCESS)
return r;
}
/* Get the driver binding protocol */