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: 682f927f8e ("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>
This commit is contained in:
Antonio Borneo 2023-04-30 22:57:59 +02:00
parent d771d7f1a7
commit 57f7ce68a4
1 changed files with 3 additions and 1 deletions

View File

@ -192,8 +192,10 @@ static int gatemate_load(struct pld_device *pld_device, const char *filename)
return retval; return retval;
retval = gatemate_set_instr(tap, JTAG_CONFIGURE); retval = gatemate_set_instr(tap, JTAG_CONFIGURE);
if (retval != ERROR_OK) if (retval != ERROR_OK) {
free(bit_file.raw_file.data);
return retval; return retval;
}
struct scan_field field; struct scan_field field;
field.num_bits = bit_file.raw_file.length * 8; field.num_bits = bit_file.raw_file.length * 8;