aboutsummaryrefslogtreecommitdiff
path: root/bfd/coffcode.h
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2015-02-26 21:32:04 +0000
committerNick Clifton <nickc@redhat.com>2015-02-26 21:32:04 +0000
commitc86934ceee0971a04bbfc145c7b9a53357c25c91 (patch)
tree3507e8637f28e853d3f611db5a83fd03c9f33866 /bfd/coffcode.h
parent9beb7c4e1d403e1374096df3a16607132a8cfe84 (diff)
downloadgdb-c86934ceee0971a04bbfc145c7b9a53357c25c91.zip
gdb-c86934ceee0971a04bbfc145c7b9a53357c25c91.tar.gz
gdb-c86934ceee0971a04bbfc145c7b9a53357c25c91.tar.bz2
Fixes illegal memory access errors and arithmetic overflows when running strip on fuzzed binaries.
PR binutils/17512 * coffcode.h (coff_compute_section_file_positions): Report negative page sizes. * elf.c (elf_fake_sections): Handle excessive alignmment powers. (assign_file_positions_for_non_load_sections): Replace assertion with an error message. (rewrite_elf_program_header): Handle excessive segment alignments. * mach-o.c (bfd_mach_o_read_section_32): Likewise. (bfd_mach_o_read_section_64): Likewise. * peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Use %B to print a bfd name, not %A.
Diffstat (limited to 'bfd/coffcode.h')
-rw-r--r--bfd/coffcode.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 0ac4ce0..8576c0a 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -3170,6 +3170,15 @@ coff_compute_section_file_positions (bfd * abfd)
This repairs 'ld -r' for arm-wince-pe target. */
if (page_size == 0)
page_size = 1;
+
+ /* PR 17512: file: 0ac816d3. */
+ if (page_size < 0)
+ {
+ bfd_set_error (bfd_error_file_too_big);
+ (*_bfd_error_handler)
+ (_("%B: page size is too large (0x%x)"), abfd, page_size);
+ return FALSE;
+ }
}
else
page_size = PE_DEF_FILE_ALIGNMENT;