From d29141627b461eaf3507eaf833184802394a5a69 Mon Sep 17 00:00:00 2001 From: Henrique Nakashima Date: Fri, 11 May 2018 20:47:48 +0000 Subject: Reland "Filter out "Type" and "DecodeParms" from trailer keys." This reverts commit 466bd4f4e0cb2bc2a7b3626948609268c52c4690. Reason for revert: On closer inspection, it seems the test is not flaky, and the root cause of the failure is an SEH exception, which is the true source of flakiness. Other tests are also affected. Original change's description: > Revert "Filter out "Type" and "DecodeParms" from trailer keys." > > This reverts commit 5f7c5be8b7072d46e8d8088a1ec14370ecfad44c. > > Reason for revert: New test is flaky, ID is not stable. > > Original change's description: > > Filter out "Type" and "DecodeParms" from trailer keys. > > > > Bug: pdfium:873 > > Change-Id: I12ae5b8776f5a73c4be81bed53ada05c94d46882 > > Reviewed-on: https://pdfium-review.googlesource.com/32190 > > Reviewed-by: dsinclair > > Commit-Queue: dsinclair > > TBR=dsinclair@chromium.org,hnakashima@chromium.org > > # Not skipping CQ checks because original CL landed > 1 day ago. > > Bug: pdfium:873 > Change-Id: I642771e12c61181c7b81681dae7b2f5549c14b18 > Reviewed-on: https://pdfium-review.googlesource.com/32430 > Reviewed-by: Henrique Nakashima > Commit-Queue: Henrique Nakashima TBR=dsinclair@chromium.org,hnakashima@chromium.org Change-Id: I2552729610c9f8adf02c70a2a43e2383ceda19b5 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: pdfium:873 Reviewed-on: https://pdfium-review.googlesource.com/32397 Reviewed-by: Henrique Nakashima Commit-Queue: Henrique Nakashima --- core/fpdfapi/edit/cpdf_creator.cpp | 3 ++- core/fpdfapi/edit/cpdf_creator_embeddertest.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp index 1e33bbceb8..71237f7915 100644 --- a/core/fpdfapi/edit/cpdf_creator.cpp +++ b/core/fpdfapi/edit/cpdf_creator.cpp @@ -627,7 +627,8 @@ int32_t CPDF_Creator::WriteDoc_Stage4() { CPDF_Object* pValue = it.second.get(); if (key == "Encrypt" || key == "Size" || key == "Filter" || key == "Index" || key == "Length" || key == "Prev" || key == "W" || - key == "XRefStm" || key == "ID") { + key == "XRefStm" || key == "ID" || key == "DecodeParms" || + key == "Type") { continue; } if (!m_Archive->WriteString(("/")) || diff --git a/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp b/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp index 1913c4ba19..f8520c4238 100644 --- a/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp +++ b/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include #include #include #include @@ -12,6 +13,7 @@ #include "public/fpdf_edit.h" #include "public/fpdfview.h" #include "testing/embedder_test.h" +#include "testing/gmock/include/gmock/gmock-matchers.h" #include "testing/gtest/include/gtest/gtest.h" class CPDF_CreatorEmbedderTest : public EmbedderTest {}; @@ -42,3 +44,21 @@ TEST_F(CPDF_CreatorEmbedderTest, SavedDocsAreEqualAfterParse) { // The sizes of saved docs should be equal. EXPECT_EQ(saved_doc_1.size(), saved_doc_2.size()); } + +TEST_F(CPDF_CreatorEmbedderTest, BUG_873) { + EXPECT_TRUE(OpenDocument("embedded_attachments.pdf")); + EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0)); + + // Cannot match second part of the ID since it is randomly generated. + std::string saved_data = GetString(); + const char kTrailerBeforeSecondID[] = + "trailer\r\n<<"; + ASSERT_THAT(saved_data, testing::HasSubstr(kTrailerBeforeSecondID)); + size_t trailer_start = saved_data.find(kTrailerBeforeSecondID); + constexpr size_t kIdLen = 32; + size_t trailer_continuation = + trailer_start + strlen(kTrailerBeforeSecondID) + kIdLen; + std::string data_after_second_id = saved_data.substr(trailer_continuation); + EXPECT_THAT(data_after_second_id, testing::StartsWith(">]>>\r\n")); +} -- cgit v1.2.3