From 3d494aff5ee1d0d313ccdce0aaf4ae44078bcd52 Mon Sep 17 00:00:00 2001 From: Jun Fang Date: Tue, 29 Sep 2015 10:24:54 +0800 Subject: Merge to XFA: Fix blank page issue caused by too strict correction on bpc For bit per component (bpc), PDF spec mentions that a RunLengthDecode or DCTDecode filter shall always deliver 8-bit samples. However, some PDF files don't follow this rule. We can find that filter is RunLengthDecode but bpc is 1 in the provided test file. In this case, pdfium will correct bpc to 8 but the actual bpc is 1. It causes a failure because the data is much more than the expected. To handle this case, pdfium doesn't correct bpc to 8 when the original bpc is 1. BUG=512557 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1328213002 . --- core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp | 7 +++++-- testing/resources/pixel/bug_512557.in | Bin 0 -> 1329 bytes testing/resources/pixel/bug_512557_expected.pdf.0.png | Bin 0 -> 185 bytes 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 testing/resources/pixel/bug_512557.in create mode 100644 testing/resources/pixel/bug_512557_expected.pdf.0.png diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp index 0362ff2e90..9497943fbd 100644 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp +++ b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp @@ -957,8 +957,11 @@ void CPDF_DIBSource::ValidateDictParam() { m_bpc = 1; m_nComponents = 1; } - if (filter == FX_BSTRC("RunLengthDecode") || - filter == FX_BSTRC("DCTDecode")) { + if (filter == FX_BSTRC("RunLengthDecode")) { + if (m_bpc != 1) { + m_bpc = 8; + } + } else if (filter == FX_BSTRC("DCTDecode")) { m_bpc = 8; } } else if (pFilter->GetType() == PDFOBJ_ARRAY) { diff --git a/testing/resources/pixel/bug_512557.in b/testing/resources/pixel/bug_512557.in new file mode 100644 index 0000000000..5f353341d5 Binary files /dev/null and b/testing/resources/pixel/bug_512557.in differ diff --git a/testing/resources/pixel/bug_512557_expected.pdf.0.png b/testing/resources/pixel/bug_512557_expected.pdf.0.png new file mode 100644 index 0000000000..66c73aebea Binary files /dev/null and b/testing/resources/pixel/bug_512557_expected.pdf.0.png differ -- cgit v1.2.3