From 9ea6fffe1ebec9bd1929c708e044b765eabea258 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sun, 31 Jul 2022 22:51:55 +0930 Subject: [PATCH] libctf: Avoid use of uninitialised variables * ctf-link.c (ctf_link_add_ctf_internal): Don't free uninitialised pointers. --- libctf/ctf-link.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libctf/ctf-link.c b/libctf/ctf-link.c index f2317302e26..702f2b4d5fe 100644 --- a/libctf/ctf-link.c +++ b/libctf/ctf-link.c @@ -114,7 +114,7 @@ ctf_link_add_ctf_internal (ctf_dict_t *fp, ctf_archive_t *ctf, goto oom; if ((input = calloc (1, sizeof (ctf_link_input_t))) == NULL) - goto oom; + goto oom1; input->clin_arc = ctf; input->clin_fp = fp_input; @@ -125,19 +125,23 @@ ctf_link_add_ctf_internal (ctf_dict_t *fp, ctf_archive_t *ctf, { if (asprintf (&keyname, "%s#%li", name, (long int) ctf_dynhash_elements (fp->ctf_link_inputs)) < 0) - goto oom; + goto oom2; } else if ((keyname = strdup (name)) == NULL) - goto oom; + goto oom2; if (ctf_dynhash_insert (fp->ctf_link_inputs, keyname, input) < 0) - goto oom; + goto oom3; return 0; - oom: + + oom3: + free (keyname); + oom2: free (input); + oom1: free (filename); - free (keyname); + oom: return ctf_set_errno (fp, ENOMEM); } -- 2.30.2