Fix another CHECK() on negative absolute position in CPDF_Parser
Treat negative positions the same as zero and skip.
-- Soften CHECK() to DCHECK() until the dust settles.
Bug: chromium:1325526
Change-Id: I0bbb6a0692944381de1d41abe3cf7e4b7938a2a8
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/93750
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp
index f78bc8b..2d0f4ae 100644
--- a/core/fpdfapi/parser/cpdf_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_parser.cpp
@@ -329,7 +329,7 @@
// in the cross reference table are all off by one.
bool CPDF_Parser::VerifyCrossRefV4() {
for (const auto& it : m_CrossRefTable->objects_info()) {
- if (it.second.pos == 0)
+ if (it.second.pos <= 0)
continue;
// Find the first non-zero position.
FX_FILESIZE SavedPos = m_pSyntax->GetPos();
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.cpp b/core/fpdfapi/parser/cpdf_syntax_parser.cpp
index e8edc42..6b51bce 100644
--- a/core/fpdfapi/parser/cpdf_syntax_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_syntax_parser.cpp
@@ -481,7 +481,7 @@
}
void CPDF_SyntaxParser::SetPos(FX_FILESIZE pos) {
- CHECK_GE(pos, 0);
+ DCHECK_GE(pos, 0);
m_Pos = std::min(pos, m_FileLen);
}