| Index: fpdfsdk/src/fpdfview.cpp
|
| diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
|
| index 63d4fbdcdeb94828fedb959c9d9a2e0f284f1ccd..af24e71b941c4fef170cc81d39a449821d07ae73 100644
|
| --- a/fpdfsdk/src/fpdfview.cpp
|
| +++ b/fpdfsdk/src/fpdfview.cpp
|
| @@ -35,27 +35,25 @@ FX_BOOL CPDF_CustomAccess::GetByte(FX_DWORD pos, FX_BYTE& ch)
|
|
|
| FX_BOOL CPDF_CustomAccess::GetBlock(FX_DWORD pos, FX_LPBYTE pBuf, FX_DWORD size)
|
| {
|
| - FX_SAFE_DWORD newPos = size;
|
| - newPos += pos;
|
| - if (!newPos.IsValid() || newPos.ValueOrDie() >= m_FileAccess.m_FileLen) {
|
| - return FALSE;
|
| - }
|
| -
|
| - return m_FileAccess.m_GetBlock(m_FileAccess.m_Param, pos, pBuf, size);
|
| + FX_SAFE_DWORD newPos = size;
|
| + newPos += pos;
|
| + if (!newPos.IsValid() || newPos.ValueOrDie() > m_FileAccess.m_FileLen) {
|
| + return FALSE;
|
| + }
|
| + return m_FileAccess.m_GetBlock(m_FileAccess.m_Param, pos, pBuf, size);
|
| }
|
|
|
| FX_BOOL CPDF_CustomAccess::ReadBlock(void* buffer, FX_FILESIZE offset, size_t size)
|
| {
|
| - if (offset < 0) {
|
| - return FALSE;
|
| - }
|
| - FX_SAFE_FILESIZE newPos = base::checked_cast<FX_FILESIZE, size_t>(size);
|
| - newPos += offset;
|
| - if (!newPos.IsValid() || newPos.ValueOrDie() >= m_FileAccess.m_FileLen) {
|
| - return FALSE;
|
| - }
|
| -
|
| - return m_FileAccess.m_GetBlock(m_FileAccess.m_Param, offset,(FX_LPBYTE) buffer, size);
|
| + if (offset < 0) {
|
| + return FALSE;
|
| + }
|
| + FX_SAFE_FILESIZE newPos = base::checked_cast<FX_FILESIZE, size_t>(size);
|
| + newPos += offset;
|
| + if (!newPos.IsValid() || newPos.ValueOrDie() > m_FileAccess.m_FileLen) {
|
| + return FALSE;
|
| + }
|
| + return m_FileAccess.m_GetBlock(m_FileAccess.m_Param, offset,(FX_LPBYTE) buffer, size);
|
| }
|
|
|
| //0 bit: FPDF_POLICY_MACHINETIME_ACCESS
|
| @@ -301,15 +299,13 @@ public:
|
| virtual FX_FILESIZE GetSize() {return m_size;}
|
| virtual FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size)
|
| {
|
| - if (offset < 0) {
|
| - return FALSE;
|
| - }
|
| -
|
| - FX_SAFE_FILESIZE newPos = base::checked_cast<FX_FILESIZE, size_t>(size);
|
| - newPos += offset;
|
| - if (!newPos.IsValid() || newPos.ValueOrDie() >= (FX_DWORD)m_size) return FALSE;
|
| + if (offset < 0) {
|
| + return FALSE;
|
| + }
|
| + FX_SAFE_FILESIZE newPos = base::checked_cast<FX_FILESIZE, size_t>(size);
|
| + newPos += offset;
|
| + if (!newPos.IsValid() || newPos.ValueOrDie() > (FX_DWORD)m_size) return FALSE;
|
| FXSYS_memcpy(buffer, m_pBuf+offset, size);
|
| -
|
| return TRUE;
|
| }
|
| private:
|
|
|