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 <[email protected]>
> ---
> 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@1:
scanning bus usb@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@1: scanning bus usb@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@1: scanning bus usb@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
signature.asc
Description: PGP signature

