* config/tc-mips.c (s_change_section): Make sure input buffer
authorAlexandre Oliva <aoliva@redhat.com>
Mon, 18 Nov 2002 20:45:48 +0000 (20:45 +0000)
committerAlexandre Oliva <aoliva@redhat.com>
Mon, 18 Nov 2002 20:45:48 +0000 (20:45 +0000)
is not accessed past the end.  Don't hand
obj_elf_change_section a pointer into the input buffer.

gas/ChangeLog
gas/config/tc-mips.c

index 2b74b6b..4a5b671 100644 (file)
@@ -1,3 +1,9 @@
+2002-11-18  Alexandre Oliva  <aoliva@redhat.com>
+
+       * config/tc-mips.c (s_change_section): Make sure input buffer
+       is not accessed past the end.  Don't hand
+       obj_elf_change_section a pointer into the input buffer.
+
 2002-11-18  Alexandre Oliva  <aoliva@redhat.com>, Chris Demetriou  <cgd@broadcom.com>
 
        * config/tc-mips.c (tc_gen_reloc): Fix typo in handling of
index 611e775..02e9e9f 100644 (file)
@@ -11657,7 +11657,8 @@ s_change_section (ignore)
 
   section_name = input_line_pointer;
   c = get_symbol_end ();
-  next_c = *(input_line_pointer + 1);
+  if (c)
+    next_c = *(input_line_pointer + 1);
 
   /* Do we have .section Name<,"flags">?  */
   if (c != ',' || (c == ',' && next_c == '"'))
@@ -11688,8 +11689,13 @@ s_change_section (ignore)
   else
     section_alignment = 0;
 
+  section_name = xstrdup (section_name);
+
   obj_elf_change_section (section_name, section_type, section_flag,
                          section_entry_size, 0, 0, 0);
+
+  if (now_seg->name != section_name)
+    free (section_name);
 #endif /* OBJ_ELF */
 }