binutils/dwarf.c abbrev list leak
authorAlan Modra <amodra@gmail.com>
Wed, 30 Aug 2023 01:40:58 +0000 (11:10 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 30 Aug 2023 01:52:23 +0000 (11:22 +0930)
* dwarf.c (process_debug_info): Call free_abrev_list on
return paths.

binutils/dwarf.c

index 80bbc547bb1b37453bf707dad45d8f5dd38e99ec..9e22a74209e6964f1445f48ab4143908dff15ee3 100644 (file)
@@ -3997,7 +3997,11 @@ process_debug_info (struct dwarf_section * section,
                    }
                }
              if (dwarf_start_die != 0 && level < saved_level)
-               return true;
+               {
+                 if (list != NULL)
+                   free_abbrev_list (list);
+                 return true;
+               }
              continue;
            }
 
@@ -4038,6 +4042,8 @@ process_debug_info (struct dwarf_section * section,
                }
              warn (_("DIE at offset %#lx refers to abbreviation number %lu which does not exist\n"),
                    die_offset, abbrev_number);
+             if (list != NULL)
+               free_abbrev_list (list);
              return false;
            }