This is an automated email from Gerrit. "zapb <[email protected]>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/9734
-- gerrit commit 2a2d66647b1d42ea9649bd7edd5e3e2d1e449276 Author: Marc Schink <[email protected]> Date: Wed Jun 10 09:14:30 2026 +0200 adapter/angie: Fix memory leak Fix memory leak related to jtag_build_buffer() across different code paths. Change-Id: Ib5a9a5453a775039a04402ee0a82adf4cfceb382 Signed-off-by: Marc Schink <[email protected]> diff --git a/src/jtag/drivers/angie.c b/src/jtag/drivers/angie.c index 6d8dc2c3b1..2d57dead43 100644 --- a/src/jtag/drivers/angie.c +++ b/src/jtag/drivers/angie.c @@ -830,11 +830,15 @@ static int angie_jtag_execute_scan(struct angie *device, tdi = 1; // write tdi and tms twice in tck=0 and tck=1 ret = angie_buffer_append(device, 0, tms, tdi); - if (ret != ERROR_OK) + if (ret != ERROR_OK) { + free(buffer); return ret; + } ret = angie_buffer_append(device, 1, tms, tdi); - if (ret != ERROR_OK) + if (ret != ERROR_OK) { + free(buffer); return ret; + } } angie_set_end_state(cmd->end_state); @@ -845,8 +849,10 @@ static int angie_jtag_execute_scan(struct angie *device, * and move directly to the end state. */ ret = angie_state_move(device, 1); - if (ret != ERROR_OK) + if (ret != ERROR_OK) { + free(buffer); return ret; + } } if (jtag_scan_type(cmd) != SCAN_OUT) { @@ -862,11 +868,10 @@ static int angie_jtag_execute_scan(struct angie *device, entry->cmd = cmd; entry->buffer = buffer; angie_read_queue_add(&device->read_queue, entry); - } else { - // built buffer won't be of later use - free(buffer); } + free(buffer); + return ERROR_OK; } --
