From 57f7ce68a48b03bcd198a009fc9c75fe3948c0db Mon Sep 17 00:00:00 2001 From: Antonio Borneo Date: Sun, 30 Apr 2023 22:57:59 +0200 Subject: pld: gatemate: fix memory leak When gatemate_set_instr() fails, the array pointed by bit_file.raw_file.data is not freed. Issue identified by OpenOCD Jenkins clang build. Free the array while propagating the error. Change-Id: I2f7fadee903f9c65cdc9ab9b52ccb5803b48a59d Signed-off-by: Antonio Borneo Fixes: 682f927f8e4e ("pld: add support for cologne chip gatemate fpgas") Reviewed-on: https://review.openocd.org/c/openocd/+/7632 Tested-by: jenkins Reviewed-by: Daniel Anselmi --- src/pld/gatemate.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pld/gatemate.c b/src/pld/gatemate.c index afd27ef..43b3f02 100644 --- a/src/pld/gatemate.c +++ b/src/pld/gatemate.c @@ -192,8 +192,10 @@ static int gatemate_load(struct pld_device *pld_device, const char *filename) return retval; retval = gatemate_set_instr(tap, JTAG_CONFIGURE); - if (retval != ERROR_OK) + if (retval != ERROR_OK) { + free(bit_file.raw_file.data); return retval; + } struct scan_field field; field.num_bits = bit_file.raw_file.length * 8; -- cgit v1.1