efi_loader: CloseProtocol() requires valid agent handle
Return EFI_INVALID_PARAMETER from CloseProtcol() if the agent handle is not valid. Return EFI_INVALID_PARAMETER if the optional controller handle is not valid. Return immediately from efi_search_obj if the handle is NULL. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
24f6be7ada
commit
ec163faa1b
@ -971,11 +971,13 @@ struct efi_object *efi_search_obj(const efi_handle_t handle)
|
||||
{
|
||||
struct efi_object *efiobj;
|
||||
|
||||
if (!handle)
|
||||
return NULL;
|
||||
|
||||
list_for_each_entry(efiobj, &efi_obj_list, link) {
|
||||
if (efiobj == handle)
|
||||
return efiobj;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -1982,7 +1984,8 @@ static efi_status_t EFIAPI efi_close_protocol(efi_handle_t handle,
|
||||
EFI_ENTRY("%p, %pUl, %p, %p", handle, protocol, agent_handle,
|
||||
controller_handle);
|
||||
|
||||
if (!agent_handle) {
|
||||
if (!efi_search_obj(agent_handle) ||
|
||||
(controller_handle && !efi_search_obj(controller_handle))) {
|
||||
r = EFI_INVALID_PARAMETER;
|
||||
goto out;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user