Use CPDF_Dictionary::GetBooleanFor() for "ImageMask" key.
According to table 89 in ISO 3200-1:2008 spec, "ImageMask" is a boolean
key for Image Dictionary and its default value is false.
This CL uses CPDF_Dictionary::GetBooleanFor() instead of
CPDF_Dictionary::GetIntegerFor() to get the "ImageMask" value from the
Image Dictionary.
Change-Id: I598d2e479f5cc2944462fc42fe4061e194e82a11
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/91430
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Nigi <nigi@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_dib.cpp b/core/fpdfapi/page/cpdf_dib.cpp
index 304a280..d621198 100644
--- a/core/fpdfapi/page/cpdf_dib.cpp
+++ b/core/fpdfapi/page/cpdf_dib.cpp
@@ -403,8 +403,7 @@
if (!IsMaybeValidBitsPerComponent(m_bpc_orig))
return false;
- if (m_pDict->GetIntegerFor("ImageMask"))
- m_bImageMask = true;
+ m_bImageMask = m_pDict->GetBooleanFor("ImageMask", /*bDefault=*/false);
if (m_bImageMask || !m_pDict->KeyExist("ColorSpace")) {
if (!m_bImageMask && !decoder_array.value().empty()) {
diff --git a/core/fpdfapi/page/cpdf_image.cpp b/core/fpdfapi/page/cpdf_image.cpp
index 6f2190e..c2db8e1 100644
--- a/core/fpdfapi/page/cpdf_image.cpp
+++ b/core/fpdfapi/page/cpdf_image.cpp
@@ -64,7 +64,7 @@
void CPDF_Image::FinishInitialization(CPDF_Dictionary* pStreamDict) {
m_pOC.Reset(pStreamDict->GetDictFor("OC"));
m_bIsMask = !pStreamDict->KeyExist("ColorSpace") ||
- pStreamDict->GetIntegerFor("ImageMask");
+ pStreamDict->GetBooleanFor("ImageMask", /*bDefault=*/false);
m_bInterpolate = !!pStreamDict->GetIntegerFor("Interpolate");
m_Height = pStreamDict->GetIntegerFor("Height");
m_Width = pStreamDict->GetIntegerFor("Width");