jtag/drivers/ulink: fix clang static analyzer warning
authorTomas Vanek <vanekt@fbl.cz>
Fri, 13 Mar 2020 14:13:21 +0000 (15:13 +0100)
committerOleksij Rempel <linux@rempel-privat.de>
Mon, 20 Apr 2020 17:26:33 +0000 (18:26 +0100)
scan-build-9:
Description: Access to field 'payload_in' results in a dereference
 of a null pointer (loaded from field 'queue_start')
File: src/jtag/drivers/ulink.c
Line: 2216

Set input/output_signals conditionally if ulink_append_get_signals_cmd()
and ulink_execute_queued_commands() returns no error.
Do not fail driver initialisation as the signals are only printed.

Change-Id: I6c842f0e9a604712abf7444a2fa95ba5810de1ff
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/5520
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
src/jtag/drivers/ulink.c

index 9235eb8935829c1add5c62adce7face83dbafd2d..4066d61091a1d84b1ae7c478213fa5467e3c8a94 100644 (file)
@@ -2210,14 +2210,17 @@ static int ulink_init(void)
        }
        ulink_clear_queue(ulink_handle);
 
-       ulink_append_get_signals_cmd(ulink_handle);
-       ulink_execute_queued_commands(ulink_handle, 200);
+       ret = ulink_append_get_signals_cmd(ulink_handle);
+       if (ret == ERROR_OK)
+               ret = ulink_execute_queued_commands(ulink_handle, 200);
 
-       /* Post-process the single CMD_GET_SIGNALS command */
-       input_signals = ulink_handle->queue_start->payload_in[0];
-       output_signals = ulink_handle->queue_start->payload_in[1];
+       if (ret == ERROR_OK) {
+               /* Post-process the single CMD_GET_SIGNALS command */
+               input_signals = ulink_handle->queue_start->payload_in[0];
+               output_signals = ulink_handle->queue_start->payload_in[1];
 
-       ulink_print_signal_states(input_signals, output_signals);
+               ulink_print_signal_states(input_signals, output_signals);
+       }
 
        ulink_clear_queue(ulink_handle);