[PATCH 1/1] boot: boot_flow_iter_set() called with uninitialized methods_flag
Tom Rini
trini at konsulko.com
Thu Jan 18 18:38:02 CET 2024
On Sun, Jan 07, 2024 at 09:56:07AM +0100, Heinrich Schuchardt wrote:
> Some code paths do not initialize methods_flag before using it.
> Initialize it to 0 in the definition line.
>
> Addresses-Coverity-ID: ("467057 Uninitialized scalar variable")
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> boot/bootflow.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/boot/bootflow.c b/boot/bootflow.c
> index 05484fd5b1..4b32d74fe1 100644
> --- a/boot/bootflow.c
> +++ b/boot/bootflow.c
> @@ -241,7 +241,7 @@ static int iter_incr(struct bootflow_iter *iter)
> if (iter->flags & BOOTFLOWIF_SINGLE_DEV) {
> ret = -ENOENT;
> } else {
> - int method_flags;
> + int method_flags = 0;
>
> ret = 0;
> dev = iter->dev;
> @@ -260,7 +260,6 @@ static int iter_incr(struct bootflow_iter *iter)
> } else if (IS_ENABLED(CONFIG_BOOTSTD_FULL) &&
> iter->flags & BOOTFLOWIF_SINGLE_MEDIA) {
> log_debug("next in single\n");
> - method_flags = 0;
> do {
> /*
> * Move to the next bootdev child of this media
> @@ -302,7 +301,6 @@ static int iter_incr(struct bootflow_iter *iter)
> }
> } else {
> ret = bootdev_next_prio(iter, &dev);
> - method_flags = 0;
> }
> }
> log_debug("ret=%d, dev=%p %s\n", ret, dev,
So this leads to test failure:
========================================== FAILURES ===========================================
___________________________ test_ut[ut_bootstd_bootdev_test_order] ____________________________
test/py/tests/test_ut.py:510: in test_ut
assert output.endswith('Failures: 0')
E AssertionError: assert False
E + where False = <built-in method endswith of str object at 0x563a7dff6e80>('Failures: 0')
E + where <built-in method endswith of str object at 0x563a7dff6e80> = 'Test: bootdev_test_order: bootdev.c\r\r\nstarting USB...\r\r\nBus usb at 1: scanning bus usb at 1 for devices... 5 USB Devi...rder(): 5 == iter.num_devs: Expected 0x5 (5), got 0x4 (4)\r\r\nTest bootdev_test_order failed 2 times\r\r\nFailures: 2'.endswith
------------------------------------ Captured stdout call -------------------------------------
=> ut bootstd bootdev_test_order
Test: bootdev_test_order: bootdev.c
starting USB...
Bus usb at 1: scanning bus usb at 1 for devices... 5 USB Device(s) found
scanning usb for storage devices... 27 Storage Device(s) found
test/boot/bootdev.c:228, bootdev_test_order(): 5 == iter.num_devs: Expected 0x5 (5), got 0x4 (4)
Test: bootdev_test_order: bootdev.c (flat tree)
starting USB...
Bus usb at 1: scanning bus usb at 1 for devices... 5 USB Device(s) found
scanning usb for storage devices... 30 Storage Device(s) found
test/boot/bootdev.c:228, bootdev_test_order(): 5 == iter.num_devs: Expected 0x5 (5), got 0x4 (4)
Test bootdev_test_order failed 2 times
Failures: 2
=>
=================================== short test summary info ===================================
FAILED test/py/tests/test_ut.py::test_ut[ut_bootstd_bootdev_test_order] - AssertionError: as...
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
================== 1 failed, 123 passed, 89 skipped, 21 deselected in 25.70s ==================
Which is in turn test/boot/bootdev.c::bootdev_test_order() and looking
at that code, I don't really understand why we expect 5 to be the
expected value, nor why it becomes 4 now.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20240118/d7c81640/attachment.sig>
More information about the U-Boot
mailing list