Index: xfa/src/fxfa/src/app/xfa_checksum.cpp |
diff --git a/xfa/src/fxfa/src/app/xfa_checksum.cpp b/xfa/src/fxfa/src/app/xfa_checksum.cpp |
index 87c3cdbe250336927fe0e15afbf1ba16b822a967..a62f8a4b40ecac978d76001312ed11ca4b4ba615 100644 |
--- a/xfa/src/fxfa/src/app/xfa_checksum.cpp |
+++ b/xfa/src/fxfa/src/app/xfa_checksum.cpp |
@@ -1,188 +1,188 @@ |
-// Copyright 2014 PDFium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
- |
-#include "xfa/src/foxitlib.h" |
-#include "xfa/src/fxfa/src/common/xfa_common.h" |
-#include "xfa_checksum.h" |
-CXFA_SAXReaderHandler::CXFA_SAXReaderHandler(CXFA_ChecksumContext* pContext) |
- : m_pContext(pContext) { |
- FXSYS_assert(m_pContext); |
-} |
-CXFA_SAXReaderHandler::~CXFA_SAXReaderHandler() {} |
-void* CXFA_SAXReaderHandler::OnTagEnter(const CFX_ByteStringC& bsTagName, |
- FX_SAXNODE eType, |
- FX_DWORD dwStartPos) { |
- UpdateChecksum(TRUE); |
- if (eType != FX_SAXNODE_Tag && eType != FX_SAXNODE_Instruction) { |
- return NULL; |
- } |
- m_SAXContext.m_eNode = eType; |
- CFX_ByteTextBuf& textBuf = m_SAXContext.m_TextBuf; |
- textBuf << "<"; |
- if (eType == FX_SAXNODE_Instruction) { |
- textBuf << "?"; |
- } |
- textBuf << bsTagName; |
- m_SAXContext.m_bsTagName = bsTagName; |
- return &m_SAXContext; |
-} |
-void CXFA_SAXReaderHandler::OnTagAttribute(void* pTag, |
- const CFX_ByteStringC& bsAttri, |
- const CFX_ByteStringC& bsValue) { |
- if (pTag == NULL) { |
- return; |
- } |
- CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
- textBuf << " " << bsAttri << "=\"" << bsValue << "\""; |
-} |
-void CXFA_SAXReaderHandler::OnTagBreak(void* pTag) { |
- if (pTag == NULL) { |
- return; |
- } |
- CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
- textBuf << ">"; |
- UpdateChecksum(FALSE); |
-} |
-void CXFA_SAXReaderHandler::OnTagData(void* pTag, |
- FX_SAXNODE eType, |
- const CFX_ByteStringC& bsData, |
- FX_DWORD dwStartPos) { |
- if (pTag == NULL) { |
- return; |
- } |
- CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
- if (eType == FX_SAXNODE_CharData) { |
- textBuf << "<![CDATA["; |
- } |
- textBuf << bsData; |
- if (eType == FX_SAXNODE_CharData) { |
- textBuf << "]]>"; |
- } |
-} |
-void CXFA_SAXReaderHandler::OnTagClose(void* pTag, FX_DWORD dwEndPos) { |
- if (pTag == NULL) { |
- return; |
- } |
- CXFA_SAXContext* pSAXContext = (CXFA_SAXContext*)pTag; |
- CFX_ByteTextBuf& textBuf = pSAXContext->m_TextBuf; |
- if (pSAXContext->m_eNode == FX_SAXNODE_Instruction) { |
- textBuf << "?>"; |
- } else if (pSAXContext->m_eNode == FX_SAXNODE_Tag) { |
- textBuf << "></" << pSAXContext->m_bsTagName << ">"; |
- } |
- UpdateChecksum(FALSE); |
-} |
-void CXFA_SAXReaderHandler::OnTagEnd(void* pTag, |
- const CFX_ByteStringC& bsTagName, |
- FX_DWORD dwEndPos) { |
- if (pTag == NULL) { |
- return; |
- } |
- CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
- textBuf << "</" << bsTagName << ">"; |
- UpdateChecksum(FALSE); |
-} |
-void CXFA_SAXReaderHandler::OnTargetData(void* pTag, |
- FX_SAXNODE eType, |
- const CFX_ByteStringC& bsData, |
- FX_DWORD dwStartPos) { |
- if (pTag == NULL && eType != FX_SAXNODE_Comment) { |
- return; |
- } |
- if (eType == FX_SAXNODE_Comment) { |
- CFX_ByteTextBuf& textBuf = m_SAXContext.m_TextBuf; |
- textBuf << "<!--" << bsData << "-->"; |
- UpdateChecksum(FALSE); |
- } else { |
- CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
- textBuf << " " << bsData; |
- } |
-} |
-void CXFA_SAXReaderHandler::UpdateChecksum(FX_BOOL bCheckSpace) { |
- int32_t iLength = m_SAXContext.m_TextBuf.GetLength(); |
- if (iLength < 1) { |
- return; |
- } |
- uint8_t* pBuffer = m_SAXContext.m_TextBuf.GetBuffer(); |
- FX_BOOL bUpdata = TRUE; |
- if (bCheckSpace) { |
- bUpdata = FALSE; |
- for (int32_t i = 0; i < iLength; i++) { |
- bUpdata = (pBuffer[i] > 0x20); |
- if (bUpdata) { |
- break; |
- } |
- } |
- } |
- if (bUpdata) { |
- m_pContext->Update(CFX_ByteStringC(pBuffer, iLength)); |
- } |
- m_SAXContext.m_TextBuf.Clear(); |
-} |
-IXFA_ChecksumContext* XFA_Checksum_Create() { |
- return new CXFA_ChecksumContext; |
-} |
-CXFA_ChecksumContext::CXFA_ChecksumContext() |
- : m_pSAXReader(NULL), m_pByteContext(NULL) {} |
-CXFA_ChecksumContext::~CXFA_ChecksumContext() { |
- FinishChecksum(); |
-} |
-FX_BOOL CXFA_ChecksumContext::StartChecksum() { |
- FinishChecksum(); |
- m_pByteContext = FX_Alloc(uint8_t, 128); |
- CRYPT_SHA1Start(m_pByteContext); |
- m_bsChecksum.Empty(); |
- m_pSAXReader = FX_SAXReader_Create(); |
- return m_pSAXReader != NULL; |
-} |
-FX_BOOL CXFA_ChecksumContext::UpdateChecksum(IFX_FileRead* pSrcFile, |
- FX_FILESIZE offset, |
- size_t size) { |
- if (m_pSAXReader == NULL) { |
- return FALSE; |
- } |
- if (pSrcFile == NULL) { |
- return FALSE; |
- } |
- if (size < 1) { |
- size = pSrcFile->GetSize(); |
- } |
- CXFA_SAXReaderHandler handler(this); |
- m_pSAXReader->SetHandler(&handler); |
- if (m_pSAXReader->StartParse( |
- pSrcFile, (FX_DWORD)offset, (FX_DWORD)size, |
- FX_SAXPARSEMODE_NotSkipSpace | FX_SAXPARSEMODE_NotConvert_amp | |
- FX_SAXPARSEMODE_NotConvert_lt | FX_SAXPARSEMODE_NotConvert_gt | |
- FX_SAXPARSEMODE_NotConvert_sharp) < 0) { |
- return FALSE; |
- } |
- return m_pSAXReader->ContinueParse(NULL) > 99; |
-} |
-void CXFA_ChecksumContext::FinishChecksum() { |
- if (m_pSAXReader != NULL) { |
- m_pSAXReader->Release(); |
- m_pSAXReader = NULL; |
- } |
- if (m_pByteContext) { |
- uint8_t digest[20]; |
- FXSYS_memset(digest, 0, 20); |
- CRYPT_SHA1Finish(m_pByteContext, digest); |
- int32_t nLen = FX_Base64EncodeA(digest, 20, NULL); |
- FX_CHAR* pBuffer = m_bsChecksum.GetBuffer(nLen); |
- FX_Base64EncodeA(digest, 20, pBuffer); |
- m_bsChecksum.ReleaseBuffer(nLen); |
- FX_Free(m_pByteContext); |
- m_pByteContext = NULL; |
- } |
-} |
-void CXFA_ChecksumContext::GetChecksum(CFX_ByteString& bsChecksum) { |
- bsChecksum = m_bsChecksum; |
-} |
-void CXFA_ChecksumContext::Update(const CFX_ByteStringC& bsText) { |
- if (m_pByteContext != NULL) { |
- CRYPT_SHA1Update(m_pByteContext, bsText.GetPtr(), bsText.GetLength()); |
- } |
-} |
+// Copyright 2014 PDFium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+ |
+#include "xfa/src/foxitlib.h" |
+#include "xfa/src/fxfa/src/common/xfa_common.h" |
+#include "xfa_checksum.h" |
+CXFA_SAXReaderHandler::CXFA_SAXReaderHandler(CXFA_ChecksumContext* pContext) |
+ : m_pContext(pContext) { |
+ FXSYS_assert(m_pContext); |
+} |
+CXFA_SAXReaderHandler::~CXFA_SAXReaderHandler() {} |
+void* CXFA_SAXReaderHandler::OnTagEnter(const CFX_ByteStringC& bsTagName, |
+ FX_SAXNODE eType, |
+ FX_DWORD dwStartPos) { |
+ UpdateChecksum(TRUE); |
+ if (eType != FX_SAXNODE_Tag && eType != FX_SAXNODE_Instruction) { |
+ return NULL; |
+ } |
+ m_SAXContext.m_eNode = eType; |
+ CFX_ByteTextBuf& textBuf = m_SAXContext.m_TextBuf; |
+ textBuf << "<"; |
+ if (eType == FX_SAXNODE_Instruction) { |
+ textBuf << "?"; |
+ } |
+ textBuf << bsTagName; |
+ m_SAXContext.m_bsTagName = bsTagName; |
+ return &m_SAXContext; |
+} |
+void CXFA_SAXReaderHandler::OnTagAttribute(void* pTag, |
+ const CFX_ByteStringC& bsAttri, |
+ const CFX_ByteStringC& bsValue) { |
+ if (pTag == NULL) { |
+ return; |
+ } |
+ CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
+ textBuf << " " << bsAttri << "=\"" << bsValue << "\""; |
+} |
+void CXFA_SAXReaderHandler::OnTagBreak(void* pTag) { |
+ if (pTag == NULL) { |
+ return; |
+ } |
+ CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
+ textBuf << ">"; |
+ UpdateChecksum(FALSE); |
+} |
+void CXFA_SAXReaderHandler::OnTagData(void* pTag, |
+ FX_SAXNODE eType, |
+ const CFX_ByteStringC& bsData, |
+ FX_DWORD dwStartPos) { |
+ if (pTag == NULL) { |
+ return; |
+ } |
+ CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
+ if (eType == FX_SAXNODE_CharData) { |
+ textBuf << "<![CDATA["; |
+ } |
+ textBuf << bsData; |
+ if (eType == FX_SAXNODE_CharData) { |
+ textBuf << "]]>"; |
+ } |
+} |
+void CXFA_SAXReaderHandler::OnTagClose(void* pTag, FX_DWORD dwEndPos) { |
+ if (pTag == NULL) { |
+ return; |
+ } |
+ CXFA_SAXContext* pSAXContext = (CXFA_SAXContext*)pTag; |
+ CFX_ByteTextBuf& textBuf = pSAXContext->m_TextBuf; |
+ if (pSAXContext->m_eNode == FX_SAXNODE_Instruction) { |
+ textBuf << "?>"; |
+ } else if (pSAXContext->m_eNode == FX_SAXNODE_Tag) { |
+ textBuf << "></" << pSAXContext->m_bsTagName << ">"; |
+ } |
+ UpdateChecksum(FALSE); |
+} |
+void CXFA_SAXReaderHandler::OnTagEnd(void* pTag, |
+ const CFX_ByteStringC& bsTagName, |
+ FX_DWORD dwEndPos) { |
+ if (pTag == NULL) { |
+ return; |
+ } |
+ CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
+ textBuf << "</" << bsTagName << ">"; |
+ UpdateChecksum(FALSE); |
+} |
+void CXFA_SAXReaderHandler::OnTargetData(void* pTag, |
+ FX_SAXNODE eType, |
+ const CFX_ByteStringC& bsData, |
+ FX_DWORD dwStartPos) { |
+ if (pTag == NULL && eType != FX_SAXNODE_Comment) { |
+ return; |
+ } |
+ if (eType == FX_SAXNODE_Comment) { |
+ CFX_ByteTextBuf& textBuf = m_SAXContext.m_TextBuf; |
+ textBuf << "<!--" << bsData << "-->"; |
+ UpdateChecksum(FALSE); |
+ } else { |
+ CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf; |
+ textBuf << " " << bsData; |
+ } |
+} |
+void CXFA_SAXReaderHandler::UpdateChecksum(FX_BOOL bCheckSpace) { |
+ int32_t iLength = m_SAXContext.m_TextBuf.GetLength(); |
+ if (iLength < 1) { |
+ return; |
+ } |
+ uint8_t* pBuffer = m_SAXContext.m_TextBuf.GetBuffer(); |
+ FX_BOOL bUpdata = TRUE; |
+ if (bCheckSpace) { |
+ bUpdata = FALSE; |
+ for (int32_t i = 0; i < iLength; i++) { |
+ bUpdata = (pBuffer[i] > 0x20); |
+ if (bUpdata) { |
+ break; |
+ } |
+ } |
+ } |
+ if (bUpdata) { |
+ m_pContext->Update(CFX_ByteStringC(pBuffer, iLength)); |
+ } |
+ m_SAXContext.m_TextBuf.Clear(); |
+} |
+IXFA_ChecksumContext* XFA_Checksum_Create() { |
+ return new CXFA_ChecksumContext; |
+} |
+CXFA_ChecksumContext::CXFA_ChecksumContext() |
+ : m_pSAXReader(NULL), m_pByteContext(NULL) {} |
+CXFA_ChecksumContext::~CXFA_ChecksumContext() { |
+ FinishChecksum(); |
+} |
+FX_BOOL CXFA_ChecksumContext::StartChecksum() { |
+ FinishChecksum(); |
+ m_pByteContext = FX_Alloc(uint8_t, 128); |
+ CRYPT_SHA1Start(m_pByteContext); |
+ m_bsChecksum.Empty(); |
+ m_pSAXReader = FX_SAXReader_Create(); |
+ return m_pSAXReader != NULL; |
+} |
+FX_BOOL CXFA_ChecksumContext::UpdateChecksum(IFX_FileRead* pSrcFile, |
+ FX_FILESIZE offset, |
+ size_t size) { |
+ if (m_pSAXReader == NULL) { |
+ return FALSE; |
+ } |
+ if (pSrcFile == NULL) { |
+ return FALSE; |
+ } |
+ if (size < 1) { |
+ size = pSrcFile->GetSize(); |
+ } |
+ CXFA_SAXReaderHandler handler(this); |
+ m_pSAXReader->SetHandler(&handler); |
+ if (m_pSAXReader->StartParse( |
+ pSrcFile, (FX_DWORD)offset, (FX_DWORD)size, |
+ FX_SAXPARSEMODE_NotSkipSpace | FX_SAXPARSEMODE_NotConvert_amp | |
+ FX_SAXPARSEMODE_NotConvert_lt | FX_SAXPARSEMODE_NotConvert_gt | |
+ FX_SAXPARSEMODE_NotConvert_sharp) < 0) { |
+ return FALSE; |
+ } |
+ return m_pSAXReader->ContinueParse(NULL) > 99; |
+} |
+void CXFA_ChecksumContext::FinishChecksum() { |
+ if (m_pSAXReader != NULL) { |
+ m_pSAXReader->Release(); |
+ m_pSAXReader = NULL; |
+ } |
+ if (m_pByteContext) { |
+ uint8_t digest[20]; |
+ FXSYS_memset(digest, 0, 20); |
+ CRYPT_SHA1Finish(m_pByteContext, digest); |
+ int32_t nLen = FX_Base64EncodeA(digest, 20, NULL); |
+ FX_CHAR* pBuffer = m_bsChecksum.GetBuffer(nLen); |
+ FX_Base64EncodeA(digest, 20, pBuffer); |
+ m_bsChecksum.ReleaseBuffer(nLen); |
+ FX_Free(m_pByteContext); |
+ m_pByteContext = NULL; |
+ } |
+} |
+void CXFA_ChecksumContext::GetChecksum(CFX_ByteString& bsChecksum) { |
+ bsChecksum = m_bsChecksum; |
+} |
+void CXFA_ChecksumContext::Update(const CFX_ByteStringC& bsText) { |
+ if (m_pByteContext != NULL) { |
+ CRYPT_SHA1Update(m_pByteContext, bsText.GetPtr(), bsText.GetLength()); |
+ } |
+} |