summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJane Liu <janeliulwq@google.com>2017-08-22 16:28:05 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-08-22 21:06:37 +0000
commit8a1081fbf7f9fac94b32c59b5851387abdd24dea (patch)
tree60cb064ca85e72c1a2cb4a2fee7c406838e78597
parented2f2769bf113df0088608fa5e949e3e48216a04 (diff)
downloadpdfium-8a1081fbf7f9fac94b32c59b5851387abdd24dea.tar.xz
Corrected the error setting after calling FPDF_LoadDocument()
Currently, if FPDF_LoadDocument() is called on a nonexistent file, the returned FPDF_DOCUMENT will be null, but FPDF_GetLastError() will return an error of FPDF_ERR_SUCCESS, i.e. no error. This CL corrects this behavior by updating the error to be FPDF_ERR_FILE when the file doesn't exist. Bug=pdfium:452 Change-Id: I3c3ec3a64e049636ddfb2ba5cb5f2745a0e19b6b Reviewed-on: https://pdfium-review.googlesource.com/11650 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Jane Liu <janeliulwq@google.com>
-rw-r--r--fpdfsdk/fpdfview.cpp4
-rw-r--r--fpdfsdk/fpdfview_embeddertest.cpp6
2 files changed, 9 insertions, 1 deletions
diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
index 964d769d2b..bf8daad958 100644
--- a/fpdfsdk/fpdfview.cpp
+++ b/fpdfsdk/fpdfview.cpp
@@ -275,8 +275,10 @@ bool CFPDF_FileStream::Flush() {
FPDF_DOCUMENT LoadDocumentImpl(
const CFX_RetainPtr<IFX_SeekableReadStream>& pFileAccess,
FPDF_BYTESTRING password) {
- if (!pFileAccess)
+ if (!pFileAccess) {
+ ProcessParseError(CPDF_Parser::FILE_ERROR);
return nullptr;
+ }
auto pParser = pdfium::MakeUnique<CPDF_Parser>();
pParser->SetPassword(password);
diff --git a/fpdfsdk/fpdfview_embeddertest.cpp b/fpdfsdk/fpdfview_embeddertest.cpp
index 00075876f6..0e478b448f 100644
--- a/fpdfsdk/fpdfview_embeddertest.cpp
+++ b/fpdfsdk/fpdfview_embeddertest.cpp
@@ -30,6 +30,12 @@ TEST_F(FPDFViewEmbeddertest, Document) {
EXPECT_EQ(-1, FPDF_GetSecurityHandlerRevision(document()));
}
+TEST_F(FPDFViewEmbeddertest, LoadNonexistentDocument) {
+ FPDF_DOCUMENT doc = FPDF_LoadDocument("nonexistent_document.pdf", "");
+ ASSERT_FALSE(doc);
+ EXPECT_EQ(static_cast<int>(FPDF_GetLastError()), FPDF_ERR_FILE);
+}
+
// See bug 465.
TEST_F(FPDFViewEmbeddertest, EmptyDocument) {
EXPECT_TRUE(CreateEmptyDocument());