summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp
diff options
context:
space:
mode:
authorHenrique Nakashima <hnakashima@chromium.org>2018-04-11 21:55:49 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-11 21:55:49 +0000
commitb92ec18fdccd196035e02f3232c0b730637ac815 (patch)
treea78ea05f4b90265dd6451a6a626bdb3a771b689b /core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp
parentc763970de6e749123af76170c16bbc3929058437 (diff)
downloadpdfium-b92ec18fdccd196035e02f3232c0b730637ac815.tar.xz
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 <thestig@chromium.org> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Diffstat (limited to 'core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp')
-rw-r--r--core/fpdfapi/page/cpdf_docpagedata_embeddertest.cpp16
1 files changed, 16 insertions, 0 deletions
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);
+}