Return DataVector<uint8_t> from CPDF_StreamAcc::ComputeDigest().
Stop storing binary data in bytestrings, and remove the corresponding
UNSAFE_BUFFERS() required for a two-arg constructor.
Bug: 42271176
Change-Id: I2d9458f8fa4ab7a9574e6cadf19f944860504f29
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/120571
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_docpagedata.cpp b/core/fpdfapi/page/cpdf_docpagedata.cpp
index 2996701..92ead13 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.cpp
+++ b/core/fpdfapi/page/cpdf_docpagedata.cpp
@@ -178,10 +178,14 @@
}
}
-CPDF_DocPageData::HashIccProfileKey::HashIccProfileKey(ByteString digest,
- uint32_t components)
+CPDF_DocPageData::HashIccProfileKey::HashIccProfileKey(
+ DataVector<uint8_t> digest,
+ uint32_t components)
: digest(std::move(digest)), components(components) {}
+CPDF_DocPageData::HashIccProfileKey::HashIccProfileKey(
+ const HashIccProfileKey& that) = default;
+
CPDF_DocPageData::HashIccProfileKey::~HashIccProfileKey() = default;
bool CPDF_DocPageData::HashIccProfileKey::operator<(
diff --git a/core/fpdfapi/page/cpdf_docpagedata.h b/core/fpdfapi/page/cpdf_docpagedata.h
index 25e276a..ef03f16 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.h
+++ b/core/fpdfapi/page/cpdf_docpagedata.h
@@ -15,6 +15,7 @@
#include "core/fpdfapi/page/cpdf_colorspace.h"
#include "core/fpdfapi/parser/cpdf_document.h"
#include "core/fxcrt/bytestring.h"
+#include "core/fxcrt/data_vector.h"
#include "core/fxcrt/fx_codepage_forward.h"
#include "core/fxcrt/fx_coordinates.h"
#include "core/fxcrt/retain_ptr.h"
@@ -88,12 +89,13 @@
private:
struct HashIccProfileKey {
- HashIccProfileKey(ByteString digest, uint32_t components);
+ HashIccProfileKey(DataVector<uint8_t> digest, uint32_t components);
+ HashIccProfileKey(const HashIccProfileKey& that);
~HashIccProfileKey();
bool operator<(const HashIccProfileKey& other) const;
- ByteString digest;
+ DataVector<uint8_t> digest;
uint32_t components;
};
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.cpp b/core/fpdfapi/parser/cpdf_stream_acc.cpp
index 1658a01..b7d9aec 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc.cpp
+++ b/core/fpdfapi/parser/cpdf_stream_acc.cpp
@@ -84,11 +84,11 @@
return m_pStream ? m_pStream->KeyForCache() : 0;
}
-ByteString CPDF_StreamAcc::ComputeDigest() const {
- uint8_t digest[20];
+DataVector<uint8_t> CPDF_StreamAcc::ComputeDigest() const {
+ DataVector<uint8_t> digest(20);
pdfium::span<const uint8_t> span = GetSpan();
CRYPT_SHA1Generate(span.data(), span.size(), digest);
- return UNSAFE_TODO(ByteString::Create(digest, 20));
+ return digest;
}
DataVector<uint8_t> CPDF_StreamAcc::DetachData() {
diff --git a/core/fpdfapi/parser/cpdf_stream_acc.h b/core/fpdfapi/parser/cpdf_stream_acc.h
index d435150..3ddc5ac 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc.h
+++ b/core/fpdfapi/parser/cpdf_stream_acc.h
@@ -39,7 +39,7 @@
uint32_t GetSize() const;
pdfium::span<const uint8_t> GetSpan() const;
uint64_t KeyForCache() const;
- ByteString ComputeDigest() const;
+ DataVector<uint8_t> ComputeDigest() const;
ByteString GetImageDecoder() const { return m_ImageDecoder; }
DataVector<uint8_t> DetachData();