summaryrefslogtreecommitdiff
path: root/core/fpdfapi
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi')
-rw-r--r--core/fpdfapi/page/cpdf_colorspace.cpp9
-rw-r--r--core/fpdfapi/page/cpdf_colorspace.h5
2 files changed, 14 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();
}
diff --git a/core/fpdfapi/page/cpdf_colorspace.h b/core/fpdfapi/page/cpdf_colorspace.h
index ff10dfce6a..9bd7c8d529 100644
--- a/core/fpdfapi/page/cpdf_colorspace.h
+++ b/core/fpdfapi/page/cpdf_colorspace.h
@@ -57,6 +57,11 @@ class CPDF_ColorSpace {
void GetDefaultColor(float* buf) const;
uint32_t CountComponents() const;
int GetFamily() const { return m_Family; }
+ bool IsSpecial() const {
+ return GetFamily() == PDFCS_SEPARATION || GetFamily() == PDFCS_DEVICEN ||
+ GetFamily() == PDFCS_INDEXED || GetFamily() == PDFCS_PATTERN;
+ }
+
virtual void GetDefaultValue(int iComponent,
float* value,
float* min,