Browse Source

Have gold's File_read::do_read() function check the start parameter

PR 23765
	* fileread.cc (File_read::do_read): Check start parameter before
	computing number of bytes to read.
binutils-2_39-branch
Nick Clifton 4 years ago
parent
commit
2a4fc266db
  1. 6
      gold/ChangeLog
  2. 6
      gold/fileread.cc

6
gold/ChangeLog

@ -1,3 +1,9 @@
2022-06-27 Nick Clifton <nickc@redhat.com>
PR 23765
* fileread.cc (File_read::do_read): Check start parameter before
computing number of bytes to read.
2022-05-18 Nick Clifton <nickc@redhat.com>
* int_encoding.cc (get_length_as_unsigned_LEB_128): Remove

6
gold/fileread.cc

@ -385,6 +385,12 @@ File_read::do_read(off_t start, section_size_type size, void* p)
ssize_t bytes;
if (this->whole_file_view_ != NULL)
{
// See PR 23765 for an example of a testcase that triggers this error.
if (((ssize_t) start) < 0)
gold_fatal(_("%s: read failed, starting offset (%#llx) less than zero"),
this->filename().c_str(),
static_cast<long long>(start));
bytes = this->size_ - start;
if (static_cast<section_size_type>(bytes) >= size)
{

Loading…
Cancel
Save