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.
This commit is contained in:
Nick Clifton
2022-06-27 13:07:40 +01:00
parent 8c9ae6df3c
commit 2a4fc266db
2 changed files with 12 additions and 0 deletions
+6
View File
@@ -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
View File
@@ -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)
{