Fix loading mutually referencing colorspaces.
CPDF_DeviceNCS and CPDF_SeparationCS can load other colorspaces and
their v_Load() needs to pass around a set of visited spaces to avoid
stack overflows if that other colorspace references the first one.
Bug: chromium:773095
Change-Id: Idae26c95a8034c3ded70f70e20ae1c414d7b29c3
Reviewed-on: https://pdfium-review.googlesource.com/16250
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp
index 97a0c15..dd13bf5 100644
--- a/core/fpdfapi/page/cpdf_colorspace.cpp
+++ b/core/fpdfapi/page/cpdf_colorspace.cpp
@@ -1091,7 +1091,7 @@
if (pAltCS == m_pArray)
return false;
- m_pAltCS = Load(pDoc, pAltCS);
+ m_pAltCS = Load(pDoc, pAltCS, pVisited);
if (!m_pAltCS)
return false;
@@ -1169,7 +1169,7 @@
if (!pAltCS || pAltCS == m_pArray)
return false;
- m_pAltCS = Load(pDoc, pAltCS);
+ m_pAltCS = Load(pDoc, pAltCS, pVisited);
m_pFunc = CPDF_Function::Load(pArray->GetDirectObjectAt(3));
if (!m_pAltCS || !m_pFunc)
return false;