Remove unnecessary CheckedNumeric usage in CPDF_DataAvail.
In several places inside CPDF_DataAvail, the code needs to make sure the
uint32_t page number parameter can be safely converted into a signed
int. Combining CheckedNumeric and checked_cast() to do this does not
make sense, because checked_cast() already crashes on failure, so
CheckedNumeric would never have the opportunity to do anything
interesting. Just replace the CheckedNumeric variables with ints to
simplify the code.
Change-Id: If9af2f94cb9bda7f68e5fd049ac63305302f7b4b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/67391
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp
index 457ae61..38b363d 100644
--- a/core/fpdfapi/parser/cpdf_data_avail.cpp
+++ b/core/fpdfapi/parser/cpdf_data_avail.cpp
@@ -676,8 +676,7 @@
}
bool CPDF_DataAvail::LoadDocPage(uint32_t dwPage) {
- FX_SAFE_INT32 safePage = pdfium::base::checked_cast<int32_t>(dwPage);
- int32_t iPage = safePage.ValueOrDie();
+ int iPage = pdfium::base::checked_cast<int>(dwPage);
if (m_pDocument->GetPageCount() <= iPage ||
m_pDocument->IsPageLoaded(iPage)) {
m_docStatus = PDF_DATAAVAIL_DONE;
@@ -788,11 +787,8 @@
if (!m_pDocument)
return DataError;
- const FX_SAFE_INT32 safePage = pdfium::base::checked_cast<int32_t>(dwPage);
- if (!safePage.IsValid())
- return DataError;
-
- if (safePage.ValueOrDie() >= m_pDocument->GetPageCount()) {
+ const int iPage = pdfium::base::checked_cast<int>(dwPage);
+ if (iPage >= m_pDocument->GetPageCount()) {
// This is XFA page.
return DataAvailable;
}
@@ -807,7 +803,7 @@
const HintsScope hints_scope(GetValidator(), pHints);
if (m_pLinearized) {
if (dwPage == m_pLinearized->GetFirstPageNo()) {
- auto* pPageDict = m_pDocument->GetPageDictionary(safePage.ValueOrDie());
+ auto* pPageDict = m_pDocument->GetPageDictionary(iPage);
if (!pPageDict)
return DataError;
@@ -858,7 +854,7 @@
if (CheckAcroForm() == DocFormStatus::FormNotAvailable)
return DataNotAvailable;
- auto* pPageDict = m_pDocument->GetPageDictionary(safePage.ValueOrDie());
+ auto* pPageDict = m_pDocument->GetPageDictionary(iPage);
if (!pPageDict)
return DataError;
@@ -993,8 +989,8 @@
}
bool CPDF_DataAvail::ValidatePage(uint32_t dwPage) const {
- FX_SAFE_INT32 safePage = pdfium::base::checked_cast<int32_t>(dwPage);
- auto* pPageDict = m_pDocument->GetPageDictionary(safePage.ValueOrDie());
+ int iPage = pdfium::base::checked_cast<int>(dwPage);
+ auto* pPageDict = m_pDocument->GetPageDictionary(iPage);
if (!pPageDict)
return false;
CPDF_PageObjectAvail obj_avail(GetValidator(), m_pDocument.Get(), pPageDict);