summaryrefslogtreecommitdiff
path: root/bfd/elf32-m32c.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-02-19 13:15:20 +1030
committerAlan Modra <amodra@gmail.com>2020-02-19 13:15:20 +1030
commit806470a219e84665a59fc6be632d4ed6a4ad908b (patch)
tree2d6c80034712a1dca2ef77c4926caf39a1bce949 /bfd/elf32-m32c.c
parent1f4361a77b18c5ab32baf2f30fefe5e301e017be (diff)
downloadbinutils-gdb-806470a219e84665a59fc6be632d4ed6a4ad908b.tar.gz
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-m32c.c')
-rw-r--r--bfd/elf32-m32c.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/bfd/elf32-m32c.c b/bfd/elf32-m32c.c
index 89bdccacd06..a4dfd8d3d4e 100644
--- a/bfd/elf32-m32c.c
+++ b/bfd/elf32-m32c.c
@@ -1284,7 +1284,7 @@ static bfd_vma
m32c_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)
{
bfd_vma symval;
@@ -1442,7 +1442,7 @@ m32c_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;
int machine;
if (abfd == elf_hash_table (link_info)->dynobj
@@ -1499,13 +1499,13 @@ m32c_elf_relax_section
bfd_set_error (bfd_error_file_too_big);
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. */