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>
This commit is contained in:
Antonio Borneo 2023-03-10 11:50:08 +01:00
parent 415715d91a
commit 86827a961a
1 changed files with 7 additions and 1 deletions

View File

@ -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);