added filesize overflow check for mmap on 32bit os

pull/662/head
suzker 2016-05-24 16:35:15 -07:00
parent 0b906f40f1
commit 43aea5c940
1 changed files with 8 additions and 0 deletions

View File

@ -373,6 +373,14 @@ void AbstractDiskWriter::ensureMmapWrite(size_t len, int64_t offset)
return;
}
uint32_t filesize_lo = filesize & 0xffffffffu;
if (sizeof(off_t) > sizeof(size_t) && (filesize_lo) > 0) {
// filesize could overflow in 32bit OS with 64bit off_t type
// the filesize will be truncated if provided as a 32bit size_t
enableMmap_ = false;
return;
}
int errNum = 0;
if (static_cast<int64_t>(len + offset) <= filesize) {
#ifdef __MINGW32__