Revert "Remove some checks that are never true in patterns code." This reverts commit 3ec52874da605fe3a28eadaebec47d6e86da4fa5. Reason for revert: https://crbug.com/904726 Original change's description: > Remove some checks that are never true in patterns code. > > Change-Id: I8f589c1fa91d140e11d6ee4edd02daa30d224ac3 > Reviewed-on: https://pdfium-review.googlesource.com/c/45190 > Reviewed-by: Tom Sepez <tsepez@chromium.org> > Commit-Queue: Lei Zhang <thestig@chromium.org> TBR=thestig@chromium.org,tsepez@chromium.org BUG=chromium:904726 # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I00dd954f5b2381efddc23f7a406c36d7e788910a Reviewed-on: https://pdfium-review.googlesource.com/c/45510 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_docpagedata.cpp b/core/fpdfapi/page/cpdf_docpagedata.cpp index eaadc96..7b62467 100644 --- a/core/fpdfapi/page/cpdf_docpagedata.cpp +++ b/core/fpdfapi/page/cpdf_docpagedata.cpp
@@ -342,9 +342,8 @@ CPDF_Pattern* CPDF_DocPageData::GetPattern(CPDF_Object* pPatternObj, bool bShading, const CFX_Matrix& matrix) { - ASSERT(pPatternObj); - ASSERT(pPatternObj->IsDictionary() || pPatternObj->IsStream()); - ASSERT(pPatternObj->GetDict()); + if (!pPatternObj) + return nullptr; CPDF_CountedPattern* ptData = nullptr; auto it = m_PatternMap.find(pPatternObj); @@ -360,6 +359,9 @@ m_pPDFDoc.Get(), pPatternObj, true, matrix); } else { CPDF_Dictionary* pDict = pPatternObj->GetDict(); + if (!pDict) + return nullptr; + int type = pDict->GetIntegerFor("PatternType"); if (type == CPDF_Pattern::TILING) { pPattern = pdfium::MakeUnique<CPDF_TilingPattern>(m_pPDFDoc.Get(),
diff --git a/core/fpdfapi/page/cpdf_tilingpattern.cpp b/core/fpdfapi/page/cpdf_tilingpattern.cpp index ce01d8a..faa7eb8 100644 --- a/core/fpdfapi/page/cpdf_tilingpattern.cpp +++ b/core/fpdfapi/page/cpdf_tilingpattern.cpp
@@ -36,6 +36,9 @@ return true; const CPDF_Dictionary* pDict = pattern_obj()->GetDict(); + if (!pDict) + return false; + m_bColored = pDict->GetIntegerFor("PaintType") == 1; m_XStep = static_cast<float>(fabs(pDict->GetNumberFor("XStep"))); m_YStep = static_cast<float>(fabs(pDict->GetNumberFor("YStep")));