* libbfd.c (bfd_read): Check result of read against desired result
using !=, not <. (_bfd_generic_get_section_contents): Set bfd_error if the seek is invalid compared to the section size.
This commit is contained in:
parent
a8c5faf7f6
commit
0bff3f4bb6
2 changed files with 25 additions and 8 deletions
|
@ -1,3 +1,13 @@
|
|||
1999-11-09 Ian Lance Taylor <ian@zembu.com>
|
||||
|
||||
* libbfd.c (bfd_read): Check result of read against desired result
|
||||
using !=, not <.
|
||||
(_bfd_generic_get_section_contents): Set bfd_error if the seek is
|
||||
invalid compared to the section size.
|
||||
|
||||
* ieee.c (ieee_slurp_debug): Get the length of the debug
|
||||
information right if there is no data part.
|
||||
|
||||
Tue Nov 2 01:44:41 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* som.c (som_fixup_formats): Improve handling of R_AUX_UNWIND,
|
||||
|
|
23
bfd/libbfd.c
23
bfd/libbfd.c
|
@ -293,7 +293,7 @@ bfd_read (ptr, size, nitems, abfd)
|
|||
|
||||
A BFD backend may wish to override bfd_error_file_truncated to
|
||||
provide something more useful (eg. no_symbols or wrong_format). */
|
||||
if (nread < (int)(size * nitems))
|
||||
if (nread != (int) (size * nitems))
|
||||
{
|
||||
if (ferror (bfd_cache_lookup (abfd)))
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
|
@ -1166,13 +1166,20 @@ _bfd_generic_get_section_contents (abfd, section, location, offset, count)
|
|||
file_ptr offset;
|
||||
bfd_size_type count;
|
||||
{
|
||||
if (count == 0)
|
||||
return true;
|
||||
if ((bfd_size_type)(offset+count) > section->_raw_size
|
||||
|| bfd_seek(abfd, (file_ptr)(section->filepos + offset), SEEK_SET) == -1
|
||||
|| bfd_read(location, (bfd_size_type)1, count, abfd) != count)
|
||||
return (false); /* on error */
|
||||
return (true);
|
||||
if (count == 0)
|
||||
return true;
|
||||
|
||||
if ((bfd_size_type) (offset + count) > section->_raw_size)
|
||||
{
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
|
||||
|| bfd_read (location, (bfd_size_type) 1, count, abfd) != count)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
boolean
|
||||
|
|
Loading…
Reference in a new issue