aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2023-04-30 22:57:59 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2023-05-05 22:15:02 +0000
commit57f7ce68a48b03bcd198a009fc9c75fe3948c0db (patch)
treef5f06dd274b250ebe345c2e132720ef74096d9d5
parentd771d7f1a7d0181b4670c7c3ddb83ba8b8eb7da0 (diff)
downloadriscv-openocd-57f7ce68a48b03bcd198a009fc9c75fe3948c0db.zip
riscv-openocd-57f7ce68a48b03bcd198a009fc9c75fe3948c0db.tar.gz
riscv-openocd-57f7ce68a48b03bcd198a009fc9c75fe3948c0db.tar.bz2
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 <borneo.antonio@gmail.com> 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 <danselmi@gmx.ch>
-rw-r--r--src/pld/gatemate.c4
1 files changed, 3 insertions, 1 deletions
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;