Index: core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp |
diff --git a/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp |
index fd723a8fa802f404b6e4d150ef92388eb2767b67..63a64a302691f5b8ca63cdf1b1f674cd437d8c4a 100644 |
--- a/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp |
+++ b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp |
@@ -296,13 +296,16 @@ FX_BOOL CPDF_HintTables::ReadSharedObjHintTable(CFX_BitStream* hStream, |
m_dwSharedObjNumArray.Add(safeObjNum.ValueOrDie()); |
if (i == m_nFirstPageSharedObjs) { |
- m_szSharedObjOffsetArray.push_back( |
- pdfium::base::checked_cast<int32_t>(dwFirstSharedObjLoc)); |
+ FX_SAFE_FILESIZE safeLoc = dwFirstSharedObjLoc; |
+ if (!safeLoc.IsValid()) |
+ return FALSE; |
+ |
+ m_szSharedObjOffsetArray.push_back(safeLoc.ValueOrDie()); |
} |
} |
if (i != 0 && i != m_nFirstPageSharedObjs) { |
- FX_SAFE_INT32 safeLoc = pdfium::base::checked_cast<int32_t>(dwPrevObjLen); |
+ FX_SAFE_FILESIZE safeLoc = dwPrevObjLen; |
safeLoc += m_szSharedObjOffsetArray[i - 1]; |
if (!safeLoc.IsValid()) |
return FALSE; |
@@ -312,7 +315,7 @@ FX_BOOL CPDF_HintTables::ReadSharedObjHintTable(CFX_BitStream* hStream, |
} |
if (dwSharedObjTotal > 0) { |
- FX_SAFE_INT32 safeLoc = pdfium::base::checked_cast<int32_t>(dwCurObjLen); |
+ FX_SAFE_FILESIZE safeLoc = dwCurObjLen; |
safeLoc += m_szSharedObjOffsetArray[dwSharedObjTotal - 1]; |
if (!safeLoc.IsValid()) |
return FALSE; |