[PATCH 4/5] efi_selftest: fix buffer size and count computations
Vincent Stehlé
vincent.stehle at arm.com
Thu Feb 19 19:43:59 CET 2026
When testing the UEFI LocateHandle() function, the BufferSize argument is
erroneously computed with a count from three test steps before, leading to
an incorrect input buffer size.
Also, while the buffer size returned by LocateHandle() is correctly
converted to a count during a subsequent comparison, it is incorrectly
passed "as is" as a count to later calls to find_in_buffer().
Finally, the variables usage during this test step is misleading, as the
`buffer_size' variable is used to hold a count, and the `count' variable is
used to hold a buffer size.
Fix all those issues at once, and remove also one copy to buffer_size,
which has now become unnecessary.
Signed-off-by: Vincent Stehlé <vincent.stehle at arm.com>
Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
Cc: Ilias Apalodimas <ilias.apalodimas at linaro.org>
Cc: Tom Rini <trini at konsulko.com>
---
lib/efi_selftest/efi_selftest_manageprotocols.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/efi_selftest/efi_selftest_manageprotocols.c b/lib/efi_selftest/efi_selftest_manageprotocols.c
index 7fe7b285011..f07ff256ce1 100644
--- a/lib/efi_selftest/efi_selftest_manageprotocols.c
+++ b/lib/efi_selftest/efi_selftest_manageprotocols.c
@@ -170,7 +170,6 @@ static int execute(void)
efi_st_error("LocateHandleBuffer with AllHandles failed\n");
return EFI_ST_FAILURE;
}
- buffer_size = count;
ret = find_in_buffer(handle1, count, buffer);
if (ret != EFI_SUCCESS) {
efi_st_error("LocateHandleBuffer failed to locate new handle\n");
@@ -245,14 +244,15 @@ static int execute(void)
/*
* Test LocateHandle with ByProtocol
*/
- count = buffer_size * sizeof(efi_handle_t);
+ buffer_size = count * sizeof(efi_handle_t);
ret = boottime->locate_handle(BY_PROTOCOL, &guid1, NULL,
- &count, buffer);
+ &buffer_size, buffer);
if (ret != EFI_SUCCESS) {
efi_st_error("LocateHandle with ByProtocol failed\n");
return EFI_ST_FAILURE;
}
- if (count / sizeof(efi_handle_t) != 2) {
+ count = buffer_size / sizeof(efi_handle_t);
+ if (count != 2) {
efi_st_error("LocateHandle failed to locate new handles\n");
return EFI_ST_FAILURE;
}
--
2.51.0
More information about the U-Boot
mailing list