PR binutils/17512
* dwarf.c (get_encoded_value): Check for an encoded size of 0.
(display_debug_lines_raw): Check for an invalid line range value.
(display_debug_frames): Check for corrupt augmentation data.
* coffgen.c (coff_get_normalized_symtab): Check for an excessive
number of auxillary entries.
* ieee.c (next_byte): Convert to a function. Return FALSE if the
next byte is beyond the end of the buffer.
(parse_int): Test the return value of next_byte.
(parse_expression): Convert to boolean. Return FALSE if the
parsing failed. Test the return value of next_byte.
(ieee_seek): Convert to a function. Return FALSE if the seek goes
beyond the end of the buffer.
(ieee_slurp_external_symbols): Test the return value of ieee_seek
and next_byte.
(ieee_slurp_sections): Convert to boolean. Return FALSE if the
operation failed. Test the return value of ieee_seek and
next_byte.
(ieee_archive_p): Test the return value of ieee_seek and
next_byte.
(do_one): Likewise.
(ieee_slurp_section_data): Likewise.
(ieee_object_p): Likewise. Store the size of the buffer in the
total_amt field in the header.
* libieee.h (common_header_type): Add amt field.
* mach-o.c (bfd_mach_o_canonicalize_one_reloc): Check that the
reloc's value is within range.
(bfd_mach_o_read_symtab_symbols): Nullify the symbols field if the
operation fails.
* pei-x86_64.c (pex64_xdata_print_uwd_codes): Replace abort with
an error message.
(pex64_dump_xdata): Check for buffer overflows.
* versados.c (process_otr): Check that the section exists before
taking its size.
(versados_object_p): Make sure that enough data was read for the
header to be checked.
* vms-alpha.c (vms_get_remaining_object_record): Change
read_so_far parameter to an unsigned int. Check that the amount
read is in range.
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
* ieee.c: Add missing prototypes. Some format fixes.
(struct output_buffer_struct): Move for availability to prototypes.
(ieee_part_after): New function.
(ieee_slurp_debug): Use it here.
(ieee_seek): Pass in ieee_data_struct rather than bfd. Use
ieee_part_after to set last_byte to one past end of current part.
Update callers.
(ieee_pos): Pass in ieee_data_struct rather than bfd.
Update callers.
(parse_expression): Don't go beyond the end of the current part.
(ieee_slurp_external_symbols): Correct type passed to read_2bytes.
(ieee_get_symtab_upper_bound, ieee_get_symtab,
ieee_get_symbol_info, ieee_print_symbol, ieee_new_section_hook,
ieee_get_reloc_upper_bound, ieee_canonicalize_reloc, block,
ieee_set_section_contents, ieee_write_object_contents,
ieee_make_empty_symbol): Make static.
(ieee_archive_p): Correct comments regarding bfd_read.
(ieee_object_p): Similarly.
(ieee_mkobject): Move it. Clear output_ptr_start, output_ptr,
output_ptr_end, input_ptr_start, input_ptr, input_ptr_end,
input_bfd, output_bfd, output_buffer.
(do_as_repeat): Write out ieee_set_current_pc_enum value as for
do_with_relocs, ie. as a symbol for relocatable files.
(ieee_vec): Add comments showing functions referenced by macros.