diff options
author | Nick Clifton <nickc@redhat.com> | 2014-11-11 15:34:27 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2014-11-11 15:34:27 +0000 |
commit | 201159ecec7e17600df4153e5d4e7a145f0c7cfe (patch) | |
tree | 328d0499e8bedc423bb8907ad53e30f7647f2df1 /bfd/coffgen.c | |
parent | 015de6884f6fdebaffd4b7d4c7f14fb4d5fc0bb1 (diff) | |
download | gdb-201159ecec7e17600df4153e5d4e7a145f0c7cfe.zip gdb-201159ecec7e17600df4153e5d4e7a145f0c7cfe.tar.gz gdb-201159ecec7e17600df4153e5d4e7a145f0c7cfe.tar.bz2 |
More fixes for invalid memory accesses, uncovered by valgrind and binary fuzzers.
PR binutils/17512
* coffcode.h (coff_slurp_line_table): Initialise the parts of the
line number cache that would not be initialised by the copy from
the new line number table.
(coff_classify_symbol): Allow for _bfd_coff_internal_syment_name
returning NULL.
* coffgen.c (coff_get_normalized_symbols): Get the external
symbols before allocating space for the internal symbols, in case
the get fails.
* elf.c (_bfd_elf_slurp_version_tables): Only allocate a verref
array if one is needed. Likewise with the verdef array.
* peXXigen.c (_bfd_XXi_swap_sym_in): Replace abort()'s with error
messages.
(_bfd_XXi_swap_aux_in): Make sure that all fields of the aux
structure are initialised.
(pe_print_edata): Avoid reading off the end of the data buffer.
Diffstat (limited to 'bfd/coffgen.c')
-rw-r--r-- | bfd/coffgen.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/bfd/coffgen.c b/bfd/coffgen.c index 6c69902..aab88e3 100644 --- a/bfd/coffgen.c +++ b/bfd/coffgen.c @@ -1758,15 +1758,15 @@ coff_get_normalized_symtab (bfd *abfd) if (obj_raw_syments (abfd) != NULL) return obj_raw_syments (abfd); + if (! _bfd_coff_get_external_symbols (abfd)) + return NULL; + size = obj_raw_syment_count (abfd) * sizeof (combined_entry_type); internal = (combined_entry_type *) bfd_zalloc (abfd, size); if (internal == NULL && size != 0) return NULL; internal_end = internal + obj_raw_syment_count (abfd); - if (! _bfd_coff_get_external_symbols (abfd)) - return NULL; - raw_src = (char *) obj_coff_external_syms (abfd); /* Mark the end of the symbols. */ |