jtag/drivers/ulink: fix clang static analyzer warnings
commit3c296bd19480033037f4e3f2db4a876a34a41f58
authorTomas Vanek <vanekt@fbl.cz>
Fri, 13 Mar 2020 14:34:47 +0000 (13 15:34 +0100)
committerOleksij Rempel <linux@rempel-privat.de>
Mon, 20 Apr 2020 17:26:58 +0000 (20 18:26 +0100)
treefdcc3bf67b88d2aa178bcb3544f338a14f82e9da
parent6dcd255b7bde5d7d3a8805c3a0e81f5edf42ccf4
jtag/drivers/ulink: fix clang static analyzer warnings

scan-build-9:
Description: Potential leak of memory pointed to by 'cmd'
File: /home/vanekt/openocd/scanbuild9/../src/jtag/drivers/ulink.c
Line: 1075

Description: Potential leak of memory pointed to by 'cmd'
File: /home/vanekt/openocd/scanbuild9/../src/jtag/drivers/ulink.c
Line: 1275

ulink_append_xxx_cmd() functions allocate memory for cmd
and then call ulink_allocate_payload(), which allocates cmd->payload_out
or cmd->payload_in.

ulink_append_queue() checks the size of queue and if the new payload
does not fit, calls ulink_execute_queued_commands() and then
ulink_post_process_queue(). If any of these two fails, an error is
returned, allocated cmd struct leaks and the queue is left in an undefined
state.

Change ulink_append_queue() flow to proceed to appending cmd to the queue
even in the case of fail in previous ulink_execute_queued_commands()
or ulink_post_process_queue(). In case of fail then clear the queue
including the last appended cmd.

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