From: Alan Modra Date: Sun, 31 Jul 2022 13:21:55 +0000 (+0930) Subject: libctf: Avoid use of uninitialised variables X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9ea6fffe1ebec9bd1929c708e044b765eabea258;p=binutils-gdb.git libctf: Avoid use of uninitialised variables * ctf-link.c (ctf_link_add_ctf_internal): Don't free uninitialised pointers. --- 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); }