diff options
author | Alan Modra <amodra@gmail.com> | 2020-02-19 13:15:20 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-02-19 13:15:20 +1030 |
commit | 806470a219e84665a59fc6be632d4ed6a4ad908b (patch) | |
tree | 2d6c80034712a1dca2ef77c4926caf39a1bce949 /bfd/elf32-rl78.c | |
parent | 1f4361a77b18c5ab32baf2f30fefe5e301e017be (diff) | |
download | fsf-binutils-gdb-806470a219e84665a59fc6be632d4ed6a4ad908b.zip fsf-binutils-gdb-806470a219e84665a59fc6be632d4ed6a4ad908b.tar.gz fsf-binutils-gdb-806470a219e84665a59fc6be632d4ed6a4ad908b.tar.bz2 |
Miscellaneous memory alloc related fixes
Some minor tidies. Allocating memory for internal relocs and symbols
after reading external relocs is slightly better with fuzzed files.
You can at least do something about silly sizes that way.
* aoutx.h (slurp_reloc_table): Allocate reloc_cache after
reading external relocs.
* ecoff.c (ecoff_slurp_reloc_table): Likewise.
* archive.c (_bfd_write_archive_contents): Don't twiddle bfd_error
after bfd_bread.
* archive64.c (_bfd_archive_64_bit_slurp_armap): Remove unnecessary
bfd_release.
* elf32-m32c.c (m32c_offset_for_reloc): Make shndx_buf a bfd_byte*.
(m32c_elf_relax_section): Likewise.
* elf32-rl78.c (rl78_offset_for_reloc): Likewise.
(rl78_elf_relax_section): Likewise.
* elf32-rx.c (rx_offset_for_reloc): Likewise.
(elf32_rx_relax_section): Likewise.
* mach-o.c (bfd_mach_o_alloc_and_read): Move earlier with better
parameter types and use..
(bfd_mach_o_read_dylinker, bfd_mach_o_read_dylib),
(bfd_mach_o_read_fvmlib, bfd_mach_o_read_str): ..in these functions.
* peicode.h (pe_bfd_object_p): Don't zero the part of opthdr
being read from file, just the extra.
* som.c (som_slurp_symbol_table): Allocate internal symbol buffer
after reading external syms. Free on failure.
Diffstat (limited to 'bfd/elf32-rl78.c')
-rw-r--r-- | bfd/elf32-rl78.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/bfd/elf32-rl78.c b/bfd/elf32-rl78.c index f4abf04..40f8c58 100644 --- a/bfd/elf32-rl78.c +++ b/bfd/elf32-rl78.c @@ -1822,7 +1822,7 @@ static bfd_vma rl78_offset_for_reloc (bfd * abfd, Elf_Internal_Rela * rel, Elf_Internal_Shdr * symtab_hdr, - Elf_External_Sym_Shndx * shndx_buf ATTRIBUTE_UNUSED, + bfd_byte * shndx_buf ATTRIBUTE_UNUSED, Elf_Internal_Sym * intsyms, Elf_Internal_Rela ** lrel, bfd * input_bfd, @@ -2068,7 +2068,7 @@ rl78_elf_relax_section bfd_byte * free_contents = NULL; Elf_Internal_Sym * intsyms = NULL; Elf_Internal_Sym * free_intsyms = NULL; - Elf_External_Sym_Shndx * shndx_buf = NULL; + bfd_byte * shndx_buf = NULL; bfd_vma pc; bfd_vma symval ATTRIBUTE_UNUSED = 0; int pcrel ATTRIBUTE_UNUSED = 0; @@ -2129,13 +2129,13 @@ rl78_elf_relax_section bfd_set_error (bfd_error_no_memory); goto error_return; } - shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + shndx_buf = bfd_malloc (amt); if (shndx_buf == NULL) goto error_return; if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 || bfd_bread (shndx_buf, amt, abfd) != amt) goto error_return; - shndx_hdr->contents = (bfd_byte *) shndx_buf; + shndx_hdr->contents = shndx_buf; } /* Get a copy of the native relocations. */ |