libctf: Avoid use of uninitialised variables
authorAlan Modra <amodra@gmail.com>
Sun, 31 Jul 2022 13:21:55 +0000 (22:51 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 1 Aug 2022 00:00:33 +0000 (09:30 +0930)
* ctf-link.c (ctf_link_add_ctf_internal): Don't free uninitialised
pointers.

libctf/ctf-link.c

index f2317302e265473d512bc97e711a504148b13b10..702f2b4d5feac154ebba5998c6de600b2a4e6506 100644 (file)
@@ -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);
 }