diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-06-26 09:24:49 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-06-26 09:30:20 -0700 |
commit | 0630b49c470ca2e3c3f74da4c7e4ff63440dd71f (patch) | |
tree | 25a1dd82b803549a5cc0c33d417ae6d63dadd2d9 /bfd/compress.c | |
parent | 515a4464176efc6ac31c83bd40b5c67f61c3b044 (diff) | |
download | binutils-0630b49c470ca2e3c3f74da4c7e4ff63440dd71f.zip binutils-0630b49c470ca2e3c3f74da4c7e4ff63440dd71f.tar.gz binutils-0630b49c470ca2e3c3f74da4c7e4ff63440dd71f.tar.bz2 |
Check file size before getting section contents
Don't check the section size in bfd_get_full_section_contents since
the size of a decompressed section may be larger than the file size.
Instead, check file size in _bfd_generic_get_section_contents.
PR binutils/21665
* compress.c (bfd_get_full_section_contents): Don't check the
file size here.
* libbfd.c (_bfd_generic_get_section_contents): Check for and
reject a section whoes size + offset is greater than the size
of the entire file.
(_bfd_generic_get_section_contents_in_window): Likewise.
Diffstat (limited to 'bfd/compress.c')
-rw-r--r-- | bfd/compress.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/bfd/compress.c b/bfd/compress.c index 7b2c37c..ef549f9 100644 --- a/bfd/compress.c +++ b/bfd/compress.c @@ -239,12 +239,6 @@ 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) { @@ -260,7 +254,7 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr) /* xgettext:c-format */ (_("error: %B(%A) is too large (%#lx bytes)"), abfd, sec, (long) sz); - return FALSE; + return FALSE; } } |