From: Matthew Fernandez Date: Sun, 13 Sep 2020 03:08:30 +0000 (-0700) Subject: fix resource leakage in acyclic X-Git-Tag: 2.46.0~20^2^2~73^2~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e62907f6f2bac5e556ac385b2867bfe247f0ca1;p=graphviz fix resource leakage in acyclic This addresses the following Coverity warning: Error: RESOURCE_LEAK (CWE-772): [#def47] graphviz-2.40.1/cmd/tools/acyclic.c:151: alloc_fn: Storage is returned from allocation function "openFile". graphviz-2.40.1/cmd/tools/acyclic.c:129:5: alloc_fn: Storage is returned from allocation function "fopen". graphviz-2.40.1/cmd/tools/acyclic.c:129:5: var_assign: Assigning: "fp" = "fopen(name, mode)". graphviz-2.40.1/cmd/tools/acyclic.c:139:5: return_alloc: Returning allocated memory "fp". graphviz-2.40.1/cmd/tools/acyclic.c:151: var_assign: Assigning: "outFile" = storage returned from "openFile(optarg, "w")". graphviz-2.40.1/cmd/tools/acyclic.c:151: overwrite_var: Overwriting "outFile" in "outFile = openFile(optarg, "w")" leaks the storage that "outFile" points to. # 149| switch (c) { # 150| case 'o': # 151|-> outFile = openFile(optarg, "w"); # 152| break; # 153| case 'n': Related to #1464. --- diff --git a/cmd/tools/acyclic.c b/cmd/tools/acyclic.c index 55a567789..e0864dee3 100644 --- a/cmd/tools/acyclic.c +++ b/cmd/tools/acyclic.c @@ -138,6 +138,8 @@ static void init(int argc, char *argv[]) while ((c = getopt(argc, argv, ":vno:")) != -1) switch (c) { case 'o': + if (outFile != NULL) + fclose(outFile); outFile = openFile(optarg, "w"); break; case 'n':