summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2018-04-12 13:13:43 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-12 13:13:43 +0000
commite1a41afbe146c9a976d96828a3a09a8a384741d9 (patch)
tree6d6aac6f513d02de07ab6465de5d05aca08a8218 /xfa
parent87b67f842fe53c3d5db553b6c1965f4588fecbfc (diff)
downloadpdfium-e1a41afbe146c9a976d96828a3a09a8a384741d9.tar.xz
[xfa] Remove form checksum abilities
This CL removes the code for verifying and creating checksums associated with form elements in XFA documents. This was the only code requiring the SAXReader which has also been removed. According to the XFA spec and application can decide which parts of the signatures are supported. This feature is being removed until we determine if/when it is needed. Bug: pdfium:1063 Change-Id: Iec2261282340f8fc72a1225d2e0d3e6ddf05edcb Reviewed-on: https://pdfium-review.googlesource.com/30150 Reviewed-by: Ryan Harrison <rharrison@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fxfa/cxfa_ffdoc.cpp18
-rw-r--r--xfa/fxfa/cxfa_ffdoc.h3
-rw-r--r--xfa/fxfa/parser/cxfa_dataexporter.cpp25
-rw-r--r--xfa/fxfa/parser/cxfa_dataexporter.h14
-rw-r--r--xfa/fxfa/parser/cxfa_simple_parser.cpp23
-rw-r--r--xfa/fxfa/parser/xfa_utils.cpp10
-rw-r--r--xfa/fxfa/parser/xfa_utils.h1
7 files changed, 17 insertions, 77 deletions
diff --git a/xfa/fxfa/cxfa_ffdoc.cpp b/xfa/fxfa/cxfa_ffdoc.cpp
index fd3a1234b0..655e58ff7f 100644
--- a/xfa/fxfa/cxfa_ffdoc.cpp
+++ b/xfa/fxfa/cxfa_ffdoc.cpp
@@ -14,7 +14,6 @@
#include "core/fpdfapi/parser/cpdf_document.h"
#include "core/fpdfapi/parser/fpdf_parser_decode.h"
#include "core/fpdfdoc/cpdf_nametree.h"
-#include "core/fxcrt/cfx_checksumcontext.h"
#include "core/fxcrt/cfx_memorystream.h"
#include "core/fxcrt/cfx_seekablemultistream.h"
#include "core/fxcrt/fx_extension.h"
@@ -390,18 +389,11 @@ RetainPtr<CFX_DIBitmap> CXFA_FFDoc::GetPDFNamedImage(
}
bool CXFA_FFDoc::SavePackage(CXFA_Node* pNode,
- const RetainPtr<IFX_SeekableStream>& pFile,
- CFX_ChecksumContext* pCSContext) {
- auto pExport = pdfium::MakeUnique<CXFA_DataExporter>(GetXFADoc());
- if (!pNode)
- return !!pExport->Export(pFile);
-
- ByteString bsChecksum;
- if (pCSContext)
- bsChecksum = pCSContext->GetChecksum();
-
- return !!pExport->Export(
- pFile, pNode, 0, bsChecksum.GetLength() ? bsChecksum.c_str() : nullptr);
+ const RetainPtr<IFX_SeekableStream>& pFile) {
+ ASSERT(pNode || GetXFADoc()->GetRoot());
+
+ CXFA_DataExporter exporter;
+ return exporter.Export(pFile, pNode ? pNode : GetXFADoc()->GetRoot());
}
bool CXFA_FFDoc::ImportData(const RetainPtr<IFX_SeekableStream>& pStream,
diff --git a/xfa/fxfa/cxfa_ffdoc.h b/xfa/fxfa/cxfa_ffdoc.h
index 14bae5973a..2d9127c056 100644
--- a/xfa/fxfa/cxfa_ffdoc.h
+++ b/xfa/fxfa/cxfa_ffdoc.h
@@ -76,8 +76,7 @@ class CXFA_FFDoc {
CFGAS_PDFFontMgr* GetPDFFontMgr() const { return m_pPDFFontMgr.get(); }
bool SavePackage(CXFA_Node* pNode,
- const RetainPtr<IFX_SeekableStream>& pFile,
- CFX_ChecksumContext* pCSContext);
+ const RetainPtr<IFX_SeekableStream>& pFile);
bool ImportData(const RetainPtr<IFX_SeekableStream>& pStream,
bool bXDP = true);
diff --git a/xfa/fxfa/parser/cxfa_dataexporter.cpp b/xfa/fxfa/parser/cxfa_dataexporter.cpp
index 4f10d0ddfe..7773aeb190 100644
--- a/xfa/fxfa/parser/cxfa_dataexporter.cpp
+++ b/xfa/fxfa/parser/cxfa_dataexporter.cpp
@@ -15,35 +15,24 @@
#include "xfa/fxfa/parser/cxfa_node.h"
#include "xfa/fxfa/parser/xfa_utils.h"
-CXFA_DataExporter::CXFA_DataExporter(CXFA_Document* pDocument)
- : m_pDocument(pDocument) {
- ASSERT(m_pDocument);
-}
-
-CXFA_DataExporter::~CXFA_DataExporter() {}
+CXFA_DataExporter::CXFA_DataExporter() = default;
-bool CXFA_DataExporter::Export(const RetainPtr<IFX_SeekableStream>& pWrite) {
- return Export(pWrite, m_pDocument->GetRoot(), 0, nullptr);
-}
+CXFA_DataExporter::~CXFA_DataExporter() = default;
bool CXFA_DataExporter::Export(const RetainPtr<IFX_SeekableStream>& pWrite,
- CXFA_Node* pNode,
- uint32_t dwFlag,
- const char* pChecksum) {
+ CXFA_Node* pNode) {
ASSERT(pWrite);
if (!pWrite)
return false;
auto pStream = pdfium::MakeRetain<CFX_SeekableStreamProxy>(pWrite, true);
pStream->SetCodePage(FX_CODEPAGE_UTF8);
- return Export(pStream, pNode, dwFlag, pChecksum);
+ return Export(pStream, pNode);
}
bool CXFA_DataExporter::Export(
const RetainPtr<CFX_SeekableStreamProxy>& pStream,
- CXFA_Node* pNode,
- uint32_t dwFlag,
- const char* pChecksum) {
+ CXFA_Node* pNode) {
if (pNode->IsModelNode()) {
switch (pNode->GetPacketType()) {
case XFA_PacketType::Xdp: {
@@ -51,7 +40,7 @@ bool CXFA_DataExporter::Export(
L"<xdp:xdp xmlns:xdp=\"http://ns.adobe.com/xdp/\">");
for (CXFA_Node* pChild = pNode->GetFirstChild(); pChild;
pChild = pChild->GetNextSibling()) {
- Export(pStream, pChild, dwFlag, pChecksum);
+ Export(pStream, pChild);
}
pStream->WriteString(L"</xdp:xdp\n>");
break;
@@ -69,7 +58,7 @@ bool CXFA_DataExporter::Export(
break;
}
case XFA_PacketType::Form: {
- XFA_DataExporter_RegenerateFormFile(pNode, pStream, pChecksum, false);
+ XFA_DataExporter_RegenerateFormFile(pNode, pStream, false);
break;
}
case XFA_PacketType::Template:
diff --git a/xfa/fxfa/parser/cxfa_dataexporter.h b/xfa/fxfa/parser/cxfa_dataexporter.h
index a2a55b3c13..5e3b58fefb 100644
--- a/xfa/fxfa/parser/cxfa_dataexporter.h
+++ b/xfa/fxfa/parser/cxfa_dataexporter.h
@@ -17,22 +17,14 @@ class CFX_SeekableStreamProxy;
class CXFA_DataExporter {
public:
- explicit CXFA_DataExporter(CXFA_Document* pDocument);
+ CXFA_DataExporter();
~CXFA_DataExporter();
- bool Export(const RetainPtr<IFX_SeekableStream>& pWrite);
- bool Export(const RetainPtr<IFX_SeekableStream>& pWrite,
- CXFA_Node* pNode,
- uint32_t dwFlag,
- const char* pChecksum);
+ bool Export(const RetainPtr<IFX_SeekableStream>& pWrite, CXFA_Node* pNode);
private:
bool Export(const RetainPtr<CFX_SeekableStreamProxy>& pStream,
- CXFA_Node* pNode,
- uint32_t dwFlag,
- const char* pChecksum);
-
- UnownedPtr<CXFA_Document> const m_pDocument;
+ CXFA_Node* pNode);
};
#endif // XFA_FXFA_PARSER_CXFA_DATAEXPORTER_H_
diff --git a/xfa/fxfa/parser/cxfa_simple_parser.cpp b/xfa/fxfa/parser/cxfa_simple_parser.cpp
index 7021285dff..b916b4dfc4 100644
--- a/xfa/fxfa/parser/cxfa_simple_parser.cpp
+++ b/xfa/fxfa/parser/cxfa_simple_parser.cpp
@@ -9,7 +9,6 @@
#include <utility>
#include <vector>
-#include "core/fxcrt/cfx_checksumcontext.h"
#include "core/fxcrt/cfx_seekablestreamproxy.h"
#include "core/fxcrt/cfx_widetextbuf.h"
#include "core/fxcrt/fx_codepage.h"
@@ -376,7 +375,6 @@ CFX_XMLNode* CXFA_SimpleParser::ParseXMLData(const ByteString& wsXML) {
auto pStream = pdfium::MakeRetain<CFX_SeekableStreamProxy>(
const_cast<uint8_t*>(wsXML.raw_str()), wsXML.GetLength());
m_pXMLDoc = pdfium::MakeUnique<CFX_XMLDoc>(pStream);
- m_pXMLDoc->GetParser()->m_dwCheckStatus = 0x03;
int32_t iRet = m_pXMLDoc->DoLoad();
if (iRet < 0 || iRet >= 100)
@@ -642,33 +640,12 @@ CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Form(
return nullptr;
}
- CFX_XMLElement* pXMLDocumentElement =
- static_cast<CFX_XMLElement*>(pXMLDocumentNode);
- WideString wsChecksum = pXMLDocumentElement->GetString(L"checksum");
- if (wsChecksum.GetLength() != 28 ||
- m_pXMLDoc->GetParser()->m_dwCheckStatus != 0x03) {
- return nullptr;
- }
-
- auto pChecksum = pdfium::MakeUnique<CFX_ChecksumContext>();
- pChecksum->StartChecksum();
- pChecksum->UpdateChecksum(m_pFileRead, m_pXMLDoc->GetParser()->m_nStart[0],
- m_pXMLDoc->GetParser()->m_nSize[0]);
- pChecksum->UpdateChecksum(m_pFileRead, m_pXMLDoc->GetParser()->m_nStart[1],
- m_pXMLDoc->GetParser()->m_nSize[1]);
- pChecksum->FinishChecksum();
- ByteString bsCheck = pChecksum->GetChecksum();
- if (bsCheck != wsChecksum.UTF8Encode())
- return nullptr;
-
CXFA_Node* pNode =
m_pFactory->CreateNode(XFA_PacketType::Form, XFA_Element::Form);
if (!pNode)
return nullptr;
pNode->JSObject()->SetCData(XFA_Attribute::Name, packet->name, false, false);
- pNode->JSObject()->SetAttribute(XFA_Attribute::Checksum,
- wsChecksum.AsStringView(), false);
CXFA_Template* pTemplateRoot =
m_pRootNode->GetFirstChildByClass<CXFA_Template>(XFA_Element::Template);
CXFA_Subform* pTemplateChosen =
diff --git a/xfa/fxfa/parser/xfa_utils.cpp b/xfa/fxfa/parser/xfa_utils.cpp
index 65be9625ba..7b4e4b1989 100644
--- a/xfa/fxfa/parser/xfa_utils.cpp
+++ b/xfa/fxfa/parser/xfa_utils.cpp
@@ -520,17 +520,9 @@ void XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode) {
void XFA_DataExporter_RegenerateFormFile(
CXFA_Node* pNode,
const RetainPtr<CFX_SeekableStreamProxy>& pStream,
- const char* pChecksum,
bool bSaveXML) {
if (pNode->IsModelNode()) {
- pStream->WriteString(L"<form");
- if (pChecksum) {
- WideString wsChecksum = WideString::FromUTF8(pChecksum);
- pStream->WriteString(L" checksum=\"");
- pStream->WriteString(wsChecksum.AsStringView());
- pStream->WriteString(L"\"");
- }
- pStream->WriteString(L" xmlns=\"");
+ pStream->WriteString(L"<form xmlns=\"");
pStream->WriteString(WideStringView(kFormNS));
WideString wsVersionNumber = RecognizeXFAVersionNumber(
diff --git a/xfa/fxfa/parser/xfa_utils.h b/xfa/fxfa/parser/xfa_utils.h
index 3b59ac8b3a..d78b9ca57c 100644
--- a/xfa/fxfa/parser/xfa_utils.h
+++ b/xfa/fxfa/parser/xfa_utils.h
@@ -32,7 +32,6 @@ void XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode);
void XFA_DataExporter_RegenerateFormFile(
CXFA_Node* pNode,
const RetainPtr<CFX_SeekableStreamProxy>& pStream,
- const char* pChecksum,
bool bSaveXML);
const XFA_SCRIPTATTRIBUTEINFO* XFA_GetScriptAttributeByName(