aboutsummaryrefslogtreecommitdiff
path: root/bfd/compress.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2017-06-26 15:25:08 +0100
committerNick Clifton <nickc@redhat.com>2017-06-26 15:25:08 +0100
commitcfd14a500e0485374596234de4db10e88ebc7618 (patch)
tree5627cf743e8fc9646606e13bd6227fe959636bd5 /bfd/compress.c
parent0602cdad745472ed2561d8096a4bb021c8d0301d (diff)
downloadgdb-cfd14a500e0485374596234de4db10e88ebc7618.zip
gdb-cfd14a500e0485374596234de4db10e88ebc7618.tar.gz
gdb-cfd14a500e0485374596234de4db10e88ebc7618.tar.bz2
Fix address violations when atempting to parse fuzzed binaries.
PR binutils/21665 bfd * opncls.c (get_build_id): Check that the section is beig enough to contain the whole note. * compress.c (bfd_get_full_section_contents): Check for and reject a section whoes size is greater than the size of the entire file. * elf32-v850.c (v850_elf_copy_notes): Allow for the ouput to not contain a notes section. binutils* objdump.c (disassemble_section): Skip any section that is bigger than the entire file.
Diffstat (limited to 'bfd/compress.c')
-rw-r--r--bfd/compress.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/bfd/compress.c b/bfd/compress.c
index c854a20..7b2c37c 100644
--- a/bfd/compress.c
+++ b/bfd/compress.c
@@ -239,6 +239,12 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr)
*ptr = NULL;
return TRUE;
}
+ else if (bfd_get_file_size (abfd) > 0
+ && sz > (bfd_size_type) bfd_get_file_size (abfd))
+ {
+ *ptr = NULL;
+ return FALSE;
+ }
switch (sec->compress_status)
{