diff options
author | Henrique Nakashima <hnakashima@chromium.org> | 2018-05-11 20:47:48 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-05-11 20:47:48 +0000 |
commit | d29141627b461eaf3507eaf833184802394a5a69 (patch) | |
tree | 34f5eafada8a33d430d1f48d39c450c20394a77f | |
parent | 9201cec90704612c05ad4a850b7a70c277c415aa (diff) | |
download | pdfium-d29141627b461eaf3507eaf833184802394a5a69.tar.xz |
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 <dsinclair@chromium.org>
> > Commit-Queue: dsinclair <dsinclair@chromium.org>
>
> 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 <hnakashima@chromium.org>
> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
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 <hnakashima@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
-rw-r--r-- | core/fpdfapi/edit/cpdf_creator.cpp | 3 | ||||
-rw-r--r-- | core/fpdfapi/edit/cpdf_creator_embeddertest.cpp | 20 |
2 files changed, 22 insertions, 1 deletions
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 <cstring> #include <memory> #include <string> #include <vector> @@ -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<</Info 9 0 R /Root 11 0 R /Size " + "36/ID[<D889EB6B9ADF88E5EDA7DC08FE85978B><"; + 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")); +} |