]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Duplicate DW_AT_call_file leak
authorAlan Modra <amodra@gmail.com>
Sun, 26 Mar 2023 08:19:13 +0000 (18:49 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 27 Mar 2023 11:28:46 +0000 (21:58 +1030)
When given two or more DW_AT_call_file for a given function we
currently leak the concat memory.

* dwarf2.c (scan_unit_for_symbols): Don't leak on duplicate
DW_AT_call_file.

bfd/dwarf2.c

index 15862dc2037fcb8a09ecda1b8f50a68bc25df6c3..d99508a96c7216cdbf385779ff334e30b7304c04 100644 (file)
@@ -4083,8 +4083,11 @@ scan_unit_for_symbols (struct comp_unit *unit)
                {
                case DW_AT_call_file:
                  if (is_int_form (&attr))
-                   func->caller_file = concat_filename (unit->line_table,
-                                                        attr.u.val);
+                   {
+                     free (func->caller_file);
+                     func->caller_file = concat_filename (unit->line_table,
+                                                          attr.u.val);
+                   }
                  break;
 
                case DW_AT_call_line: