From 92479281c4621e8d71565f76b879e36bf92b0b18 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sun, 26 Mar 2023 18:49:13 +1030 Subject: [PATCH] Duplicate DW_AT_call_file leak 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 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index 15862dc2037..d99508a96c7 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -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: -- 2.30.2