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;
 }
 

-- 

Reply via email to