target/riscv-013: fix unchecked return code
authorAntonio Borneo <borneo.antonio@gmail.com>
Mon, 19 Sep 2022 12:37:24 +0000 (14:37 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Fri, 23 Sep 2022 21:22:31 +0000 (21:22 +0000)
Scan-build complains about variable 'sbcs_orig' that can be used
not initialized.
Logic error: Assigned value is garbage or undefined
riscv-013.c:4468 Assigned value is garbage or undefined
This is caused by not checking the return value of the call
riscv-013.c:4466 dmi_read(target, &sbcs_orig, DM_SBCS);
In fact when dmi_read() returns error, the variable 'sbcs_orig' is
not assigned.

Check the returned value.

Change-Id: Ia9032a0229aa243138f95f4e13f765726a4ceae9
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7205
Reviewed-by: Tim Newsome <tim@sifive.com>
Reviewed-by: Jan Matyas <matyas@codasip.com>
Tested-by: jenkins
src/target/riscv/riscv-013.c

index 2c762e337aef6eff1d42ddc18935041d4cf8923f..1f4c34346a8c5062e7c69ffc8c7267fc433d1bd6 100644 (file)
@@ -4463,7 +4463,9 @@ static int riscv013_test_sba_config_reg(struct target *target,
 
        uint32_t rd_val;
        uint32_t sbcs_orig;
-       dmi_read(target, &sbcs_orig, DM_SBCS);
+       int retval = dmi_read(target, &sbcs_orig, DM_SBCS);
+       if (retval != ERROR_OK)
+               return retval;
 
        uint32_t sbcs = sbcs_orig;
        bool test_passed;