summaryrefslogtreecommitdiff
path: root/bfd/libbfd.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1999-11-09 19:13:21 +0000
committerIan Lance Taylor <ian@airs.com>1999-11-09 19:13:21 +0000
commit79b5fa5aa2cc44209a42482210a854a3801c8c14 (patch)
tree1c09cda2b92ac3f5743f01c8cb8c63ffaaa7866f /bfd/libbfd.c
parentcbab68771ee845b7246897e3b1c1a9ed51884735 (diff)
downloadgdb-79b5fa5aa2cc44209a42482210a854a3801c8c14.tar.gz
* 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.
Diffstat (limited to 'bfd/libbfd.c')
-rw-r--r--bfd/libbfd.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/bfd/libbfd.c b/bfd/libbfd.c
index 9620cda7068..b43e88ca280 100644
--- a/bfd/libbfd.c
+++ b/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