Prevent use of null pFileRead in CPDF_DataAvail.
Change-Id: I52e668ca410a0c6b96a789ecc18c993152047ead
Reviewed-on: https://pdfium-review.googlesource.com/9550
Commit-Queue: Art Snake <art-snake@yandex-team.ru>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp
index bc81e99..88755a9 100644
--- a/core/fpdfapi/parser/cpdf_data_avail.cpp
+++ b/core/fpdfapi/parser/cpdf_data_avail.cpp
@@ -57,17 +57,12 @@
HintsAssigner(CPDF_ReadValidator* validator,
CPDF_DataAvail::DownloadHints* hints)
: validator_(validator) {
- if (validator_) {
- validator_->ResetErrors();
- validator_->SetDownloadHints(hints);
- }
+ ASSERT(validator_);
+ validator_->ResetErrors();
+ validator_->SetDownloadHints(hints);
}
- ~HintsAssigner() {
- if (validator_) {
- validator_->SetDownloadHints(nullptr);
- }
- }
+ ~HintsAssigner() { validator_->SetDownloadHints(nullptr); }
private:
CFX_UnownedPtr<CPDF_ReadValidator> validator_;
@@ -83,16 +78,11 @@
FileAvail* pFileAvail,
const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead,
bool bSupportHintTable)
- : m_pFileAvail(pFileAvail),
- m_pFileRead(
- pFileRead
- ? pdfium::MakeRetain<CPDF_ReadValidator>(pFileRead, m_pFileAvail)
- : nullptr) {
+ : m_pFileAvail(pFileAvail) {
+ ASSERT(pFileRead);
+ m_pFileRead = pdfium::MakeRetain<CPDF_ReadValidator>(pFileRead, m_pFileAvail);
m_Pos = 0;
- m_dwFileLen = 0;
- if (m_pFileRead) {
- m_dwFileLen = (uint32_t)m_pFileRead->GetSize();
- }
+ m_dwFileLen = m_pFileRead->GetSize();
m_dwCurrentOffset = 0;
m_dwXRefOffset = 0;
m_dwTrailerOffset = 0;
@@ -237,13 +227,10 @@
CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsDocAvail(
DownloadHints* pHints) {
- const HintsAssigner hints_assigner(m_pFileRead.Get(), pHints);
+ if (!m_dwFileLen)
+ return DataError;
- if (!m_dwFileLen && m_pFileRead) {
- m_dwFileLen = (uint32_t)m_pFileRead->GetSize();
- if (!m_dwFileLen)
- return DataError;
- }
+ const HintsAssigner hints_assigner(m_pFileRead.Get(), pHints);
while (!m_bDocAvail) {
if (!CheckDocStatus(pHints))
@@ -744,9 +731,6 @@
if (!m_pFileAvail->IsDataAvail(0, kReqSize))
return LinearizationUnknown;
- if (!m_pFileRead)
- return NotLinearized;
-
FX_FILESIZE dwSize = m_pFileRead->GetSize();
if (dwSize < (FX_FILESIZE)kReqSize)
return LinearizationUnknown;