* 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:
Ian Lance Taylor 1999-11-09 19:13:21 +00:00
parent a8c5faf7f6
commit 0bff3f4bb6
2 changed files with 25 additions and 8 deletions

View File

@ -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,

View File

@ -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