diff options
-rw-r--r-- | core/src/fxcrt/extension.h | 8 | ||||
-rw-r--r-- | fpdfsdk/src/fpdfview.cpp | 18 |
2 files changed, 14 insertions, 12 deletions
diff --git a/core/src/fxcrt/extension.h b/core/src/fxcrt/extension.h index 6221d14fc7..bb2a79b9f9 100644 --- a/core/src/fxcrt/extension.h +++ b/core/src/fxcrt/extension.h @@ -73,7 +73,7 @@ public: FX_SAFE_FILESIZE pos = size; pos += offset; - if (!pos.IsValid() || pos.ValueOrDie() >= m_pFile->GetSize()) { + if (!pos.IsValid() || pos.ValueOrDie() > m_pFile->GetSize()) { return FALSE; } @@ -95,7 +95,7 @@ public: if (m_bUseRange) { pos += m_nOffset; - if (!pos.IsValid() || pos.ValueOrDie() >= (size_t)GetSize()) { + if (!pos.IsValid() || pos.ValueOrDie() > (size_t)GetSize()) { return FALSE; } } @@ -200,7 +200,7 @@ public: } FX_SAFE_FILESIZE range = size; range += offset; - if (!range.IsValid() || range.ValueOrDie() >= m_nCurSize) { + if (!range.IsValid() || range.ValueOrDie() > m_nCurSize) { return FALSE; } @@ -232,7 +232,7 @@ public: FX_SAFE_SIZE_T newPos = size; newPos += offset; - if (!newPos.IsValid() || newPos.ValueOrDefault(0) == 0 || newPos.ValueOrDie() >= m_nCurSize) { + if (!newPos.IsValid() || newPos.ValueOrDefault(0) == 0 || newPos.ValueOrDie() > m_nCurSize) { return FALSE; } diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp index af24e71b94..23d44935b5 100644 --- a/fpdfsdk/src/fpdfview.cpp +++ b/fpdfsdk/src/fpdfview.cpp @@ -299,14 +299,16 @@ 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; - FXSYS_memcpy(buffer, m_pBuf+offset, size); - return TRUE; + 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: FX_BYTE* m_pBuf; |