summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fxfa/app/xfa_checksum.cpp29
-rw-r--r--xfa/fxfa/xfa_checksum.h6
2 files changed, 17 insertions, 18 deletions
diff --git a/xfa/fxfa/app/xfa_checksum.cpp b/xfa/fxfa/app/xfa_checksum.cpp
index 641ec7880e..09c42719c1 100644
--- a/xfa/fxfa/app/xfa_checksum.cpp
+++ b/xfa/fxfa/app/xfa_checksum.cpp
@@ -7,6 +7,7 @@
#include "xfa/fxfa/xfa_checksum.h"
#include "core/fdrm/crypto/fx_crypt.h"
+#include "third_party/base/ptr_util.h"
namespace {
@@ -210,19 +211,16 @@ void CXFA_SAXReaderHandler::UpdateChecksum(bool bCheckSpace) {
m_SAXContext.m_TextBuf.Clear();
}
-CXFA_ChecksumContext::CXFA_ChecksumContext()
- : m_pSAXReader(nullptr), m_pByteContext(nullptr) {}
+CXFA_ChecksumContext::CXFA_ChecksumContext() {}
-CXFA_ChecksumContext::~CXFA_ChecksumContext() {
- FinishChecksum();
-}
+CXFA_ChecksumContext::~CXFA_ChecksumContext() {}
void CXFA_ChecksumContext::StartChecksum() {
FinishChecksum();
- m_pByteContext = FX_Alloc(CRYPT_sha1_context, 1);
- CRYPT_SHA1Start(m_pByteContext);
+ m_pByteContext = pdfium::MakeUnique<CRYPT_sha1_context>();
+ CRYPT_SHA1Start(m_pByteContext.get());
m_bsChecksum.clear();
- m_pSAXReader = new CFX_SAXReader;
+ m_pSAXReader = pdfium::MakeUnique<CFX_SAXReader>();
}
bool CXFA_ChecksumContext::UpdateChecksum(
@@ -248,18 +246,16 @@ bool CXFA_ChecksumContext::UpdateChecksum(
}
void CXFA_ChecksumContext::FinishChecksum() {
- delete m_pSAXReader;
- m_pSAXReader = nullptr;
+ m_pSAXReader.reset();
if (m_pByteContext) {
uint8_t digest[20];
FXSYS_memset(digest, 0, 20);
- CRYPT_SHA1Finish(m_pByteContext, digest);
+ CRYPT_SHA1Finish(m_pByteContext.get(), digest);
int32_t nLen = Base64EncodeA(digest, 20, nullptr);
FX_CHAR* pBuffer = m_bsChecksum.GetBuffer(nLen);
Base64EncodeA(digest, 20, pBuffer);
m_bsChecksum.ReleaseBuffer(nLen);
- FX_Free(m_pByteContext);
- m_pByteContext = nullptr;
+ m_pByteContext.reset();
}
}
@@ -268,7 +264,8 @@ CFX_ByteString CXFA_ChecksumContext::GetChecksum() const {
}
void CXFA_ChecksumContext::Update(const CFX_ByteStringC& bsText) {
- if (m_pByteContext) {
- CRYPT_SHA1Update(m_pByteContext, bsText.raw_str(), bsText.GetLength());
- }
+ if (!m_pByteContext)
+ return;
+
+ CRYPT_SHA1Update(m_pByteContext.get(), bsText.raw_str(), bsText.GetLength());
}
diff --git a/xfa/fxfa/xfa_checksum.h b/xfa/fxfa/xfa_checksum.h
index 45c3db59c9..31cf101553 100644
--- a/xfa/fxfa/xfa_checksum.h
+++ b/xfa/fxfa/xfa_checksum.h
@@ -7,6 +7,8 @@
#ifndef XFA_FXFA_XFA_CHECKSUM_H_
#define XFA_FXFA_XFA_CHECKSUM_H_
+#include <memory>
+
#include "core/fdrm/crypto/fx_crypt.h"
#include "xfa/fde/xml/cfx_saxreader.h"
#include "xfa/fxfa/fxfa.h"
@@ -70,8 +72,8 @@ class CXFA_ChecksumContext {
CFX_ByteString GetChecksum() const;
protected:
- CFX_SAXReader* m_pSAXReader;
- CRYPT_sha1_context* m_pByteContext;
+ std::unique_ptr<CFX_SAXReader> m_pSAXReader;
+ std::unique_ptr<CRYPT_sha1_context> m_pByteContext;
CFX_ByteString m_bsChecksum;
};