summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/cpdf_colorspace.cpp
diff options
context:
space:
mode:
authorHenrique Nakashima <hnakashima@chromium.org>2017-12-14 22:42:13 +0000
committerChromium commit bot <commit-bot@chromium.org>2017-12-14 22:42:13 +0000
commitd92073b756277d2d4c9c839dd5ac8fa0e8bb9e28 (patch)
tree5a0f7850edcb9aa5131a9e00f5295a68357d7204 /core/fpdfapi/page/cpdf_colorspace.cpp
parent9a2c6552460c82417de13e86f07e23dc8c8cef74 (diff)
downloadpdfium-d92073b756277d2d4c9c839dd5ac8fa0e8bb9e28.tar.xz
Add restrictions to alternate color spaces.chromium/3295
- ICC color spaces cannot have a Pattern color space as Alternate - Separation and DeviceN color spaces cannot have a special color space as Alternate. Special color spaces are {Separation, DeviceN, Indexed and Pattern}. Bug: chromium:794492 Change-Id: Ia2199382c759d8d1d13c605c22d6495e935265ad Reviewed-on: https://pdfium-review.googlesource.com/21310 Commit-Queue: Henrique Nakashima <hnakashima@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fpdfapi/page/cpdf_colorspace.cpp')
-rw-r--r--core/fpdfapi/page/cpdf_colorspace.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp
index c09562ce52..89d5285878 100644
--- a/core/fpdfapi/page/cpdf_colorspace.cpp
+++ b/core/fpdfapi/page/cpdf_colorspace.cpp
@@ -947,6 +947,9 @@ bool CPDF_ICCBasedCS::FindAlternateProfile(CPDF_Document* pDoc,
if (!pAlterCS)
return false;
+ if (pAlterCS->GetFamily() == PDFCS_PATTERN)
+ return false;
+
if (pAlterCS->CountComponents() != m_nComponents)
return false;
@@ -1102,6 +1105,9 @@ bool CPDF_SeparationCS::v_Load(CPDF_Document* pDoc,
if (!m_pAltCS)
return false;
+ if (m_pAltCS->IsSpecial())
+ return false;
+
CPDF_Object* pFuncObj = pArray->GetDirectObjectAt(3);
if (pFuncObj && !pFuncObj->IsName())
m_pFunc = CPDF_Function::Load(pFuncObj);
@@ -1181,6 +1187,9 @@ bool CPDF_DeviceNCS::v_Load(CPDF_Document* pDoc,
if (!m_pAltCS || !m_pFunc)
return false;
+ if (m_pAltCS->IsSpecial())
+ return false;
+
return m_pFunc->CountOutputs() >= m_pAltCS->CountComponents();
}