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