The UEFI specification requires FreePool() to return EFI_INVALID_PARAMETER when the passed buffer is invalid. But it does not well define what checks are required. Therefore we try to avoid passing NULL to FreePool() in open_file_system() used by dtbdump.c and smbiosdump.c. But we check the wrong variable.
Check the pointer to the handle buffer, not the handle. Reviewed-by: Ilias Apalodimas <[email protected]> Signed-off-by: Heinrich Schuchardt <[email protected]> --- v3: rephrase the subject line and the commit message v2: new patch --- lib/efi_loader/dtbdump.c | 2 +- lib/efi_loader/smbiosdump.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/efi_loader/dtbdump.c b/lib/efi_loader/dtbdump.c index 1e72404ecc1..865edc33a97 100644 --- a/lib/efi_loader/dtbdump.c +++ b/lib/efi_loader/dtbdump.c @@ -350,7 +350,7 @@ open_file_system(struct efi_simple_file_system_protocol **file_system) EFI_OPEN_PROTOCOL_GET_PROTOCOL); if (ret != EFI_SUCCESS) error(u"Failed to open simple file system protocol\r\n"); - if (handle) + if (handle_buffer) bs->free_pool(handle_buffer); return ret; diff --git a/lib/efi_loader/smbiosdump.c b/lib/efi_loader/smbiosdump.c index 974728a43af..494c3d18945 100644 --- a/lib/efi_loader/smbiosdump.c +++ b/lib/efi_loader/smbiosdump.c @@ -248,7 +248,7 @@ open_file_system(struct efi_simple_file_system_protocol **file_system) EFI_OPEN_PROTOCOL_GET_PROTOCOL); if (ret != EFI_SUCCESS) error(u"Failed to open simple file system protocol\r\n"); - if (handle) + if (handle_buffer) bs->free_pool(handle_buffer); return ret; -- 2.53.0

