free read_symbol_name string
authorAlan Modra <amodra@gmail.com>
Tue, 5 Jul 2022 00:21:57 +0000 (09:51 +0930)
committerAlan Modra <amodra@gmail.com>
Sat, 9 Jul 2022 11:50:52 +0000 (21:20 +0930)
read_symbol_name mallocs the string it returns.  Free it when done.

* read.c (read_symbol_name): Free name on error path.
* config/tc-ppc.c (ppc_GNU_visibility): Free name returned from
read_symbol_name.
(ppc_extern, ppc_globl, ppc_weak): Likewise.

gas/config/tc-ppc.c
gas/read.c

index 4d789fd16a9a4af8ce4b4894c235273da09d67ff..5f2c41621b41a3f7a55bf9659ad81e4ef1d537f6 100644 (file)
@@ -4231,6 +4231,7 @@ static void ppc_GNU_visibility (int visibility) {
       if ((name = read_symbol_name ()) == NULL)
        break;
       symbolP = symbol_find_or_make (name);
+      free (name);
       coffsym = coffsymbol (symbol_get_bfdsym (symbolP));
 
       coffsym->native->u.syment.n_type &= ~SYM_V_MASK;
@@ -4837,6 +4838,7 @@ ppc_extern (int ignore ATTRIBUTE_UNUSED)
     return;
 
   sym = symbol_find_or_make (name);
+  free (name);
 
   if (*input_line_pointer == ',')
     {
@@ -4872,6 +4874,7 @@ ppc_globl (int ignore ATTRIBUTE_UNUSED)
     return;
 
   sym = symbol_find_or_make (name);
+  free (name);
   S_SET_EXTERNAL (sym);
 
   if (*input_line_pointer == ',')
@@ -4908,6 +4911,7 @@ ppc_weak (int ignore ATTRIBUTE_UNUSED)
     return;
 
   sym = symbol_find_or_make (name);
+  free (name);
   S_SET_WEAK (sym);
 
   if (*input_line_pointer == ',')
index c6ce0345892284a48e5280ebb9cca111fab975f4..35446ff0f8ba099f9eddcf10efc1c79b34cf87e0 100644 (file)
@@ -1699,6 +1699,7 @@ read_symbol_name (void)
     {
       as_bad (_("expected symbol name"));
       ignore_rest_of_line ();
+      free (start);
       return NULL;
     }