diff options
author | Oliver Chang <ochang@chromium.org> | 2015-11-11 15:46:24 -0800 |
---|---|---|
committer | Oliver Chang <ochang@chromium.org> | 2015-11-11 15:46:24 -0800 |
commit | 9b99615806e358fdb396d1cb162ee2e69c2a20ec (patch) | |
tree | 3031d7080a9616dfa6d8d4d997e72eaed4ab1b1a /core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp | |
parent | f20a34c0f2dfca49f735a0f11147254c26831e7c (diff) | |
download | pdfium-9b99615806e358fdb396d1cb162ee2e69c2a20ec.tar.xz |
Fix extraction of colour components in CPDF_DIBSource::DownSampleScanline32Bit
Previously, if |m_bpc| was < 8 (e.g. 4), this function may still try to
access the source components as if |m_bpc| == 8. Even when it fell into
the codepath that tried to do the right thing in this case, it was
wrong.
BUG=554151
R=tsepez@chromium.org, thestig@chromium.org
Review URL: https://codereview.chromium.org/1433423002 .
Diffstat (limited to 'core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp')
-rw-r--r-- | core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp new file mode 100644 index 0000000000..1633249d0d --- /dev/null +++ b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp @@ -0,0 +1,19 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/embedder_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +class FPDFRenderLoadImageEmbeddertest : public EmbedderTest {}; + +TEST_F(FPDFRenderLoadImageEmbeddertest, Bug_554151) { + // Test scanline downsampling with a BitsPerComponent of 4. + // Should not crash. + EXPECT_TRUE(OpenDocument("bug_554151.pdf")); + FPDF_PAGE page = LoadPage(0); + EXPECT_NE(nullptr, page); + FPDF_BITMAP bitmap = RenderPage(page); + FPDFBitmap_Destroy(bitmap); + UnloadPage(page); +} |