PR gold/13288
* gold/fileread.cc (File_read::find_view): Add assert. (File_read::make_view): Move bounds check (replace with assert)... (File_read::find_or_make_view): ... to here.
This commit is contained in:
parent
42dd20afd3
commit
cdd7e2444c
|
@ -1,3 +1,10 @@
|
|||
2011-10-17 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
PR gold/13288
|
||||
* gold/fileread.cc (File_read::find_view): Add assert.
|
||||
(File_read::make_view): Move bounds check (replace with assert)...
|
||||
(File_read::find_or_make_view): ... to here.
|
||||
|
||||
2011-10-12 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* gold/output.cc (Output_file::open_base_file): Handle case where
|
||||
|
|
|
@ -329,6 +329,10 @@ inline File_read::View*
|
|||
File_read::find_view(off_t start, section_size_type size,
|
||||
unsigned int byteshift, File_read::View** vshifted) const
|
||||
{
|
||||
gold_assert(start <= this->size_
|
||||
&& (static_cast<unsigned long long>(size)
|
||||
<= static_cast<unsigned long long>(this->size_ - start)));
|
||||
|
||||
if (vshifted != NULL)
|
||||
*vshifted = NULL;
|
||||
|
||||
|
@ -456,16 +460,9 @@ File_read::make_view(off_t start, section_size_type size,
|
|||
unsigned int byteshift, bool cache)
|
||||
{
|
||||
gold_assert(size > 0);
|
||||
|
||||
// Check that start and end of the view are within the file.
|
||||
if (start > this->size_
|
||||
|| (static_cast<unsigned long long>(size)
|
||||
> static_cast<unsigned long long>(this->size_ - start)))
|
||||
gold_fatal(_("%s: attempt to map %lld bytes at offset %lld exceeds "
|
||||
"size of file; the file may be corrupt"),
|
||||
this->filename().c_str(),
|
||||
static_cast<long long>(size),
|
||||
static_cast<long long>(start));
|
||||
gold_assert(start <= this->size_
|
||||
&& (static_cast<unsigned long long>(size)
|
||||
<= static_cast<unsigned long long>(this->size_ - start)));
|
||||
|
||||
off_t poff = File_read::page_offset(start);
|
||||
|
||||
|
@ -523,6 +520,16 @@ File_read::View*
|
|||
File_read::find_or_make_view(off_t offset, off_t start,
|
||||
section_size_type size, bool aligned, bool cache)
|
||||
{
|
||||
// Check that start and end of the view are within the file.
|
||||
if (start > this->size_
|
||||
|| (static_cast<unsigned long long>(size)
|
||||
> static_cast<unsigned long long>(this->size_ - start)))
|
||||
gold_fatal(_("%s: attempt to map %lld bytes at offset %lld exceeds "
|
||||
"size of file; the file may be corrupt"),
|
||||
this->filename().c_str(),
|
||||
static_cast<long long>(size),
|
||||
static_cast<long long>(start));
|
||||
|
||||
unsigned int byteshift;
|
||||
if (offset == 0)
|
||||
byteshift = 0;
|
||||
|
|
Loading…
Reference in New Issue