free read_symbol_name string

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.
This commit is contained in:
Alan Modra
2022-07-05 09:51:57 +09:30
parent 07e64e0b7c
commit 9f6e589719
2 changed files with 5 additions and 0 deletions

View 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 == ',')

View File

@@ -1699,6 +1699,7 @@ read_symbol_name (void)
{
as_bad (_("expected symbol name"));
ignore_rest_of_line ();
free (start);
return NULL;
}