diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2023-03-10 11:50:08 +0100 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2023-03-25 18:08:18 +0000 |
commit | 86827a961a22815ebd5fa367468ca7444f0ee2e1 (patch) | |
tree | 7fa5f6242026b1eaaeddfd654a51eb3c0d42c4bf /src/svf | |
parent | 415715d91a11ea4ed6db3a1fd760741a22b6e098 (diff) | |
download | riscv-openocd-86827a961a22815ebd5fa367468ca7444f0ee2e1.zip riscv-openocd-86827a961a22815ebd5fa367468ca7444f0ee2e1.tar.gz riscv-openocd-86827a961a22815ebd5fa367468ca7444f0ee2e1.tar.bz2 |
svf: fix leaking file descriptor
The file descriptor svf_fd is not closed on command error, thus
leaking memory.
Close svf_fd on errors.
While there, properly initialize svf_fd using NULL instead of 0.
Change-Id: I5efe9ce576a3a50588b30000222665e26161dfdc
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7532
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: <kai.schmitz@advantest.com>
Diffstat (limited to 'src/svf')
-rw-r--r-- | src/svf/svf.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/svf/svf.c b/src/svf/svf.c index 7195880..05fb21d 100644 --- a/src/svf/svf.c +++ b/src/svf/svf.c @@ -377,6 +377,9 @@ COMMAND_HANDLER(handle_svf_command) svf_addcycles = atoi(CMD_ARGV[i + 1]); if (svf_addcycles > SVF_MAX_ADDCYCLES) { command_print(CMD, "addcycles: %s out of range", CMD_ARGV[i + 1]); + if (svf_fd) + fclose(svf_fd); + svf_fd = NULL; return ERROR_FAIL; } i++; @@ -384,6 +387,9 @@ COMMAND_HANDLER(handle_svf_command) tap = jtag_tap_by_string(CMD_ARGV[i+1]); if (!tap) { command_print(CMD, "Tap: %s unknown", CMD_ARGV[i+1]); + if (svf_fd) + fclose(svf_fd); + svf_fd = NULL; return ERROR_FAIL; } i++; @@ -546,7 +552,7 @@ COMMAND_HANDLER(handle_svf_command) free_all: fclose(svf_fd); - svf_fd = 0; + svf_fd = NULL; /* free buffers */ free(svf_command_buffer); |