Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1165)

Unified Diff: core/fpdfapi/parser/cpdf_data_avail.cpp

Issue 2430743003: in the attempt to fix 627393, changed IFX_FileRead's readBlock to return the length it reads
Patch Set: fix an undefined variable Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: core/fpdfapi/parser/cpdf_data_avail.cpp
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp
index 3fe4b03da62012ae33d8cbf50944708e5572224f..d3d70adbe9731d609a1cde298d0fd3e17dcd2b1c 100644
--- a/core/fpdfapi/parser/cpdf_data_avail.cpp
+++ b/core/fpdfapi/parser/cpdf_data_avail.cpp
@@ -957,11 +957,13 @@ bool CPDF_DataAvail::GetNextChar(uint8_t& ch) {
if ((FX_FILESIZE)(read_pos + read_size) > m_dwFileLen)
read_pos = m_dwFileLen - read_size;
- if (!m_pFileRead->ReadBlock(m_bufferData, read_pos, read_size))
+ uint32_t read_real_size =
+ m_pFileRead->ReadBlock(m_bufferData, read_pos, read_size);
+ if (read_real_size != read_size && !m_pFileRead->IsEOF())
return false;
m_bufferOffset = read_pos;
- m_bufferSize = read_size;
+ m_bufferSize = read_real_size;
}
ch = m_bufferData[pos - m_bufferOffset];
m_Pos++;
@@ -1062,7 +1064,8 @@ bool CPDF_DataAvail::CheckTrailer(DownloadHints* pHints) {
int32_t iTrailerSize =
(int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512);
if (m_pFileAvail->IsDataAvail(m_Pos, iTrailerSize)) {
- int32_t iSize = (int32_t)(m_Pos + iTrailerSize - m_dwTrailerOffset);
+ uint32_t iSize = pdfium::base::checked_cast<uint32_t>(m_Pos + iTrailerSize -
+ m_dwTrailerOffset);
CFX_BinaryBuf buf(iSize);
uint8_t* pBuf = buf.GetBuffer();
if (!pBuf) {
@@ -1070,10 +1073,11 @@ bool CPDF_DataAvail::CheckTrailer(DownloadHints* pHints) {
return false;
}
- if (!m_pFileRead->ReadBlock(pBuf, m_dwTrailerOffset, iSize))
+ uint32_t readSize = m_pFileRead->ReadBlock(pBuf, m_dwTrailerOffset, iSize);
+ if (readSize != iSize && !m_pFileRead->IsEOF())
return false;
- ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, false));
+ ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)readSize, false));
m_syntaxParser.InitParser(file.get(), 0);
std::unique_ptr<CPDF_Object> pTrailer(

Powered by Google App Engine
This is Rietveld 408576698