From bbf7900653e5c7a4323090850b34c10a9a1e9af0 Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Sat, 12 Sep 2020 20:17:36 -0700 Subject: [PATCH] fix resource leakage in gv2gml This addresses the following Coverity warning: Error: RESOURCE_LEAK (CWE-772): [#def57] graphviz-2.40.1/cmd/tools/gv2gml.c:713: alloc_fn: Storage is returned from allocation function "openFile". graphviz-2.40.1/cmd/tools/gv2gml.c:666:5: alloc_fn: Storage is returned from allocation function "fopen". graphviz-2.40.1/cmd/tools/gv2gml.c:666:5: var_assign: Assigning: "fp" = "fopen(name, mode)". graphviz-2.40.1/cmd/tools/gv2gml.c:677:5: return_alloc: Returning allocated memory "fp". graphviz-2.40.1/cmd/tools/gv2gml.c:713: var_assign: Assigning: "outFile" = storage returned from "openFile(optarg, "w")". graphviz-2.40.1/cmd/tools/gv2gml.c:713: overwrite_var: Overwriting "outFile" in "outFile = openFile(optarg, "w")" leaks the storage that "outFile" points to. # 711| switch (c) { # 712| case 'o': # 713|-> outFile = openFile(optarg, "w"); # 714| break; # 715| case ':': Related to #1464. --- cmd/tools/gv2gml.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/tools/gv2gml.c b/cmd/tools/gv2gml.c index 9ce6e0109..75c445e0d 100644 --- a/cmd/tools/gv2gml.c +++ b/cmd/tools/gv2gml.c @@ -704,6 +704,8 @@ static void initargs(int argc, char **argv) while ((c = getopt(argc, argv, ":o:")) != -1) { switch (c) { case 'o': + if (outFile != NULL) + fclose(outFile); outFile = openFile(optarg, "w"); break; case ':': -- 2.40.0