svf: fix leaking file descriptor 32/7532/2
authorAntonio Borneo <borneo.antonio@gmail.com>
Fri, 10 Mar 2023 10:50:08 +0000 (11:50 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 25 Mar 2023 18:08:18 +0000 (18:08 +0000)
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>
src/svf/svf.c

index 7195880670970a9bbce5a6dc86bc1779f14e4fc3..05fb21d631ee13837c4091afa940227a831bc9fd 100644 (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);

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)