From b92ec18fdccd196035e02f3232c0b730637ac815 Mon Sep 17 00:00:00 2001 From: Henrique Nakashima Date: Wed, 11 Apr 2018 21:55:49 +0000 Subject: Fix crash when ColorSpace references itself directly. Also fixes any problems with cycles between colorspaces. Past fixes have solved problems with CPDF_DocPageData::GetColorSpace() calling itself and CPDF_DocPageData::GetColorSpace() calling CPDF_ColorSpace::Load() and vice versa. They have not solved CPDF_ColorSpace::Load() calling itself. This CL repurposes the |pVisited| set to ensure CPDF_ColorSpace::Load() does not try to load a colorspace as a dependency of itself and creates |pVisitedLocal| to ensure CPDF_DocPageData::GetColorSpace() does not create a similar circular dependency not involving CPDF_ColorSpace::Load(). Bug: chromium:828206 Change-Id: Ib2d0ec494be169135607f3651e0f70627b26ebd7 Reviewed-on: https://pdfium-review.googlesource.com/29810 Reviewed-by: Lei Zhang Commit-Queue: Henrique Nakashima --- core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp (limited to 'core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp') diff --git a/core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp b/core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp new file mode 100644 index 0000000000..5120b21c56 --- /dev/null +++ b/core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp @@ -0,0 +1,16 @@ +// Copyright 2018 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 CPDF_DocPageDataEmbeddertest : public EmbedderTest {}; + +TEST_F(CPDF_DocPageDataEmbeddertest, Crasher_828206) { + EXPECT_TRUE(OpenDocument("bug_828206.pdf")); + FPDF_PAGE page = LoadPage(0); + ASSERT_TRUE(page); + RenderLoadedPage(page); + UnloadPage(page); +} -- cgit v1.2.3