summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2015-10-28 13:58:49 -0400
committerDan Sinclair <dsinclair@chromium.org>2015-10-28 13:58:49 -0400
commit6be2aab35a6e605b3a884c558528efa3ac9231c6 (patch)
tree43e5bd09f8f114e7526aef0abbd2235e75970ce4
parent90c90059131c0412ebefddb6a97084c4776a3c4e (diff)
downloadpdfium-6be2aab35a6e605b3a884c558528efa3ac9231c6.tar.xz
Merge to XFA: Check if document was opened during testing.
When we call OpenDocument we fail to check if the document was actually opened. Currently we return true in all cases (assuming we read the file). This CL updates the code to check if the document was opened and return false if not. I've updated several tests to check for FALSE instead of TRUE. I verified the documents in fact don't open with my local (non-PDFium) PDF reader. BUG=pdfium:223 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1417893007 . (cherry picked from commit dd4cd523ef4546b43d68e8ca6ec0a97fbe8954e9) Review URL: https://codereview.chromium.org/1418563010 .
-rw-r--r--core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp2
-rw-r--r--fpdfsdk/src/fpdf_dataavail_embeddertest.cpp6
-rw-r--r--fpdfsdk/src/fpdfview_embeddertest.cpp4
-rw-r--r--testing/embedder_test.cpp14
4 files changed, 14 insertions, 12 deletions
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
index b6cfc4e89f..ed2863bcf3 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
@@ -9,7 +9,7 @@ class FPDFParserEmbeddertest : public EmbedderTest {};
TEST_F(FPDFParserEmbeddertest, LoadError_454695) {
// Test trailer dictionary with $$ze instead of Size.
- EXPECT_TRUE(OpenDocument("testing/resources/bug_454695.pdf"));
+ EXPECT_FALSE(OpenDocument("testing/resources/bug_454695.pdf"));
}
TEST_F(FPDFParserEmbeddertest, Bug_481363) {
diff --git a/fpdfsdk/src/fpdf_dataavail_embeddertest.cpp b/fpdfsdk/src/fpdf_dataavail_embeddertest.cpp
index 292ff79d05..730a793d63 100644
--- a/fpdfsdk/src/fpdf_dataavail_embeddertest.cpp
+++ b/fpdfsdk/src/fpdf_dataavail_embeddertest.cpp
@@ -10,11 +10,13 @@
class FPDFDataAvailEmbeddertest : public EmbedderTest {};
TEST_F(FPDFDataAvailEmbeddertest, TrailerUnterminated) {
- // Document doesn't even open under XFA but must not crash.
+ // Document must load without crashing but is too malformed to be available.
EXPECT_FALSE(OpenDocument("testing/resources/trailer_unterminated.pdf"));
+ EXPECT_FALSE(FPDFAvail_IsDocAvail(avail_, &hints_));
}
TEST_F(FPDFDataAvailEmbeddertest, TrailerAsHexstring) {
- // Document doesn't even open under XFA but must not crash.
+ // Document must load without crashing but is too malformed to be available.
EXPECT_FALSE(OpenDocument("testing/resources/trailer_as_hexstring.pdf"));
+ EXPECT_FALSE(FPDFAvail_IsDocAvail(avail_, &hints_));
}
diff --git a/fpdfsdk/src/fpdfview_embeddertest.cpp b/fpdfsdk/src/fpdfview_embeddertest.cpp
index e369ed8404..36e79d777a 100644
--- a/fpdfsdk/src/fpdfview_embeddertest.cpp
+++ b/fpdfsdk/src/fpdfview_embeddertest.cpp
@@ -184,7 +184,7 @@ TEST_F(FPDFViewEmbeddertest, Crasher_113) {
}
TEST_F(FPDFViewEmbeddertest, Crasher_451830) {
- // XFA branch detects this document as bad.
+ // Document is damaged and can't be opened.
EXPECT_FALSE(OpenDocument("testing/resources/bug_451830.pdf"));
}
@@ -196,6 +196,6 @@ TEST_F(FPDFViewEmbeddertest, Crasher_452455) {
}
TEST_F(FPDFViewEmbeddertest, Crasher_454695) {
- // XFA branch detects this document as bad.
+ // Document is damanged and can't be opened.
EXPECT_FALSE(OpenDocument("testing/resources/bug_454695.pdf"));
}
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index c1d19b2cfc..36405d300c 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -97,9 +97,8 @@ void EmbedderTest::TearDown() {
bool EmbedderTest::OpenDocument(const std::string& filename) {
file_contents_ = GetFileContents(filename.c_str(), &file_length_);
- if (!file_contents_) {
+ if (!file_contents_)
return false;
- }
loader_ = new TestLoader(file_contents_, file_length_);
file_access_.m_FileLen = static_cast<unsigned long>(file_length_);
@@ -115,19 +114,20 @@ bool EmbedderTest::OpenDocument(const std::string& filename) {
avail_ = FPDFAvail_Create(&file_avail_, &file_access_);
(void)FPDFAvail_IsDocAvail(avail_, &hints_);
- if (!FPDFAvail_IsLinearized(avail_)) {
+ if (!FPDFAvail_IsLinearized(avail_))
document_ = FPDF_LoadCustomDocument(&file_access_, nullptr);
- } else {
+ else
document_ = FPDFAvail_GetDocument(avail_, nullptr);
- }
- if (!document_) {
+
+ if (!document_)
return false;
- }
+
int docType = DOCTYPE_PDF;
if (FPDF_HasXFAField(document_, &docType)) {
if (docType != DOCTYPE_PDF)
(void)FPDF_LoadXFA(document_);
}
+
(void)FPDF_GetDocPermissions(document_);
(void)FPDFAvail_IsFormAvail(avail_, &hints_);