From: OpenOCD-Gerrit <ope...@us...> - 2022-10-08 07:54:33
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via 0a7e17242037431671d52c7e92f72f216c6a4c57 (commit) from cff2cf373f1b86233eb2abab8e590fb0f88c7449 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0a7e17242037431671d52c7e92f72f216c6a4c57 Author: Daniel Anselmi <dan...@gm...> Date: Sun Oct 2 01:17:15 2022 +0200 fix memory leak in virtex2 driver Change-Id: Ia08f7aaad25631132885acd5898477c1106f0ec4 Signed-off-by: Daniel Anselmi <dan...@gm...> Reviewed-on: https://review.openocd.org/c/openocd/+/7235 Tested-by: jenkins Reviewed-by: Antonio Borneo <bor...@gm...> diff --git a/src/pld/virtex2.c b/src/pld/virtex2.c index 771af9939..b4861e9cb 100644 --- a/src/pld/virtex2.c +++ b/src/pld/virtex2.c @@ -157,6 +157,8 @@ static int virtex2_load(struct pld_device *pld_device, const char *filename) virtex2_set_instr(virtex2_info->tap, 0x3f); /* BYPASS */ jtag_execute_queue(); + xilinx_free_bit_file(&bit_file); + return ERROR_OK; } diff --git a/src/pld/xilinx_bit.c b/src/pld/xilinx_bit.c index 25deb8082..7911b8dc1 100644 --- a/src/pld/xilinx_bit.c +++ b/src/pld/xilinx_bit.c @@ -87,26 +87,42 @@ int xilinx_read_bit_file(struct xilinx_bit_file *bit_file, const char *filename) return ERROR_PLD_FILE_LOAD_FAILED; } + bit_file->source_file = NULL; + bit_file->part_name = NULL; + bit_file->date = NULL; + bit_file->time = NULL; + bit_file->data = NULL; + read_count = fread(bit_file->unknown_header, 1, 13, input_file); if (read_count != 13) { LOG_ERROR("couldn't read unknown_header from file '%s'", filename); return ERROR_PLD_FILE_LOAD_FAILED; } - if (read_section(input_file, 2, 'a', NULL, &bit_file->source_file) != ERROR_OK) + if (read_section(input_file, 2, 'a', NULL, &bit_file->source_file) != ERROR_OK) { + xilinx_free_bit_file(bit_file); return ERROR_PLD_FILE_LOAD_FAILED; + } - if (read_section(input_file, 2, 'b', NULL, &bit_file->part_name) != ERROR_OK) + if (read_section(input_file, 2, 'b', NULL, &bit_file->part_name) != ERROR_OK) { + xilinx_free_bit_file(bit_file); return ERROR_PLD_FILE_LOAD_FAILED; + } - if (read_section(input_file, 2, 'c', NULL, &bit_file->date) != ERROR_OK) + if (read_section(input_file, 2, 'c', NULL, &bit_file->date) != ERROR_OK) { + xilinx_free_bit_file(bit_file); return ERROR_PLD_FILE_LOAD_FAILED; + } - if (read_section(input_file, 2, 'd', NULL, &bit_file->time) != ERROR_OK) + if (read_section(input_file, 2, 'd', NULL, &bit_file->time) != ERROR_OK) { + xilinx_free_bit_file(bit_file); return ERROR_PLD_FILE_LOAD_FAILED; + } - if (read_section(input_file, 4, 'e', &bit_file->length, &bit_file->data) != ERROR_OK) + if (read_section(input_file, 4, 'e', &bit_file->length, &bit_file->data) != ERROR_OK) { + xilinx_free_bit_file(bit_file); return ERROR_PLD_FILE_LOAD_FAILED; + } LOG_DEBUG("bit_file: %s %s %s,%s %" PRIu32 "", bit_file->source_file, bit_file->part_name, bit_file->date, bit_file->time, bit_file->length); @@ -115,3 +131,12 @@ int xilinx_read_bit_file(struct xilinx_bit_file *bit_file, const char *filename) return ERROR_OK; } + +void xilinx_free_bit_file(struct xilinx_bit_file *bit_file) +{ + free(bit_file->source_file); + free(bit_file->part_name); + free(bit_file->date); + free(bit_file->time); + free(bit_file->data); +} diff --git a/src/pld/xilinx_bit.h b/src/pld/xilinx_bit.h index e30ed2337..f443bf70e 100644 --- a/src/pld/xilinx_bit.h +++ b/src/pld/xilinx_bit.h @@ -22,4 +22,6 @@ struct xilinx_bit_file { int xilinx_read_bit_file(struct xilinx_bit_file *bit_file, const char *filename); +void xilinx_free_bit_file(struct xilinx_bit_file *bit_file); + #endif /* OPENOCD_PLD_XILINX_BIT_H */ ----------------------------------------------------------------------- Summary of changes: src/pld/virtex2.c | 2 ++ src/pld/xilinx_bit.c | 35 ++++++++++++++++++++++++++++++----- src/pld/xilinx_bit.h | 2 ++ 3 files changed, 34 insertions(+), 5 deletions(-) hooks/post-receive -- Main OpenOCD repository |