From d78ef3b7c9435f5e066da970da7f28b598b07866 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 20 Oct 2017 17:23:40 -0700 Subject: Fix a FPDF_GetMetaText() crash. With a newly created document, there is no parser. CPDF_Document is missing a nullptr check which can be triggered via FPDF_GetMetaText(). BUG=pdfium:915 Change-Id: If9a300a6dc2ca5914c3544eae5c27fe3139dd821 Reviewed-on: https://pdfium-review.googlesource.com/16490 Commit-Queue: Ryan Harrison Reviewed-by: Ryan Harrison --- core/fpdfapi/parser/cpdf_document.cpp | 3 +++ fpdfsdk/fpdfdoc_embeddertest.cpp | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp index 6a8ddd1e1c..565886a3a5 100644 --- a/core/fpdfapi/parser/cpdf_document.cpp +++ b/core/fpdfapi/parser/cpdf_document.cpp @@ -377,6 +377,9 @@ void CPDF_Document::LoadDocInternal() { } void CPDF_Document::LoadDocumentInfo() { + if (!m_pParser) + return; + CPDF_Object* pInfoObj = GetOrParseIndirectObject(m_pParser->GetInfoObjNum()); if (pInfoObj) m_pInfoDict = pInfoObj->GetDict(); diff --git a/fpdfsdk/fpdfdoc_embeddertest.cpp b/fpdfsdk/fpdfdoc_embeddertest.cpp index 19147d4bae..c691a17a11 100644 --- a/fpdfsdk/fpdfdoc_embeddertest.cpp +++ b/fpdfsdk/fpdfdoc_embeddertest.cpp @@ -237,6 +237,13 @@ TEST_F(FPDFDocEmbeddertest, GetMetaTextInAttachmentFile) { WideString::FromUTF16LE(buf, FXSYS_len(kExpectedModDate))); } +TEST_F(FPDFDocEmbeddertest, GetMetaTextFromNewDocument) { + FPDF_DOCUMENT empty_doc = FPDF_CreateNewDocument(); + unsigned short buf[128]; + EXPECT_EQ(2u, FPDF_GetMetaText(empty_doc, "Title", buf, sizeof(buf))); + FPDF_CloseDocument(empty_doc); +} + TEST_F(FPDFDocEmbeddertest, NoPageLabels) { EXPECT_TRUE(OpenDocument("about_blank.pdf")); EXPECT_EQ(1, FPDF_GetPageCount(document())); -- cgit v1.2.3