diff options
-rw-r--r-- | bfd/elf.c | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -9433,7 +9433,6 @@ bool _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) { bfd_byte *contents = NULL; - bool free_contents = false; unsigned int freeidx = 0; size_t amt; @@ -9476,7 +9475,6 @@ _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) if (contents == NULL) goto error_return_verref; - free_contents = true; verneed_size = hdr->sh_size; verneed_count = hdr->sh_info; } @@ -9605,7 +9603,7 @@ _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) } elf_tdata (abfd)->cverrefs = i; - if (free_contents) + if (contents != elf_tdata (abfd)->dt_verneed) free (contents); contents = NULL; } @@ -9652,7 +9650,6 @@ _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) if (contents == NULL) goto error_return_verdef; - free_contents = true; BFD_ASSERT (sizeof (Elf_External_Verdef) >= sizeof (Elf_External_Verdaux)); @@ -9802,7 +9799,7 @@ _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) ((bfd_byte *) everdef + iverdef->vd_next)); } - if (free_contents) + if (contents != elf_tdata (abfd)->dt_verdef) free (contents); contents = NULL; } @@ -9858,7 +9855,8 @@ _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) return true; error_return: - if (free_contents) + if (contents != elf_tdata (abfd)->dt_verneed + && contents != elf_tdata (abfd)->dt_verdef) free (contents); return false; } |