diff options
author | Nick Clifton <nickc@redhat.com> | 2017-06-26 15:25:08 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2017-06-26 15:25:08 +0100 |
commit | cfd14a500e0485374596234de4db10e88ebc7618 (patch) | |
tree | 5627cf743e8fc9646606e13bd6227fe959636bd5 /bfd/compress.c | |
parent | 0602cdad745472ed2561d8096a4bb021c8d0301d (diff) | |
download | gdb-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.c | 6 |
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) { |