Pass password as ByteString in parser
As opposed to using raw char*, since we are going to make a bytestring
out of it at the bottom of the call chain anyways.
Bug: pdfium:1706
Change-Id: I1062fced217018f8fa78c1c5b194363473fe000d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/83561
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp
index a223904..9642f09 100644
--- a/core/fpdfapi/parser/cpdf_data_avail.cpp
+++ b/core/fpdfapi/parser/cpdf_data_avail.cpp
@@ -1008,7 +1008,7 @@
CPDF_DataAvail::ParseDocument(
std::unique_ptr<CPDF_Document::RenderDataIface> pRenderData,
std::unique_ptr<CPDF_Document::PageDataIface> pPageData,
- const char* password) {
+ const ByteString& password) {
if (m_pDocument) {
// We already returned parsed document.
return std::make_pair(CPDF_Parser::HANDLER_ERROR, nullptr);
diff --git a/core/fpdfapi/parser/cpdf_data_avail.h b/core/fpdfapi/parser/cpdf_data_avail.h
index d4ed713..ca99e14 100644
--- a/core/fpdfapi/parser/cpdf_data_avail.h
+++ b/core/fpdfapi/parser/cpdf_data_avail.h
@@ -110,7 +110,7 @@
std::pair<CPDF_Parser::Error, std::unique_ptr<CPDF_Document>> ParseDocument(
std::unique_ptr<CPDF_Document::RenderDataIface> pRenderData,
std::unique_ptr<CPDF_Document::PageDataIface> pPageData,
- const char* password);
+ const ByteString& password);
const CPDF_HintTables* GetHintTables() const { return m_pHintTables.get(); }
diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp
index 572623f..1f1a784 100644
--- a/core/fpdfapi/parser/cpdf_document.cpp
+++ b/core/fpdfapi/parser/cpdf_document.cpp
@@ -152,7 +152,7 @@
CPDF_Parser::Error CPDF_Document::LoadLinearizedDoc(
const RetainPtr<CPDF_ReadValidator>& validator,
- const char* password) {
+ const ByteString& password) {
if (!m_pParser)
SetParser(std::make_unique<CPDF_Parser>(this));
diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h
index 6b1335e..7c856ed 100644
--- a/core/fpdfapi/parser/cpdf_document.h
+++ b/core/fpdfapi/parser/cpdf_document.h
@@ -120,7 +120,7 @@
const char* password);
CPDF_Parser::Error LoadLinearizedDoc(
const RetainPtr<CPDF_ReadValidator>& validator,
- const char* password);
+ const ByteString& password);
bool has_valid_cross_reference_table() const {
return m_bHasValidCrossReferenceTable;
}
diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp
index 27fa9c4..6b1a7f8 100644
--- a/core/fpdfapi/parser/cpdf_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_parser.cpp
@@ -148,7 +148,7 @@
CPDF_Parser::Error CPDF_Parser::StartParse(
const RetainPtr<IFX_SeekableReadStream>& pFileAccess,
- const char* password) {
+ const ByteString& password) {
if (!InitSyntaxParser(
pdfium::MakeRetain<CPDF_ReadValidator>(pFileAccess, nullptr)))
return FORMAT_ERROR;
@@ -965,7 +965,7 @@
CPDF_Parser::Error CPDF_Parser::StartLinearizedParse(
const RetainPtr<CPDF_ReadValidator>& validator,
- const char* password) {
+ const ByteString& password) {
DCHECK(!m_bHasParsed);
DCHECK(!m_bXRefTableRebuilt);
SetPassword(password);
diff --git a/core/fpdfapi/parser/cpdf_parser.h b/core/fpdfapi/parser/cpdf_parser.h
index b0b24ae..dc658e0 100644
--- a/core/fpdfapi/parser/cpdf_parser.h
+++ b/core/fpdfapi/parser/cpdf_parser.h
@@ -62,11 +62,11 @@
~CPDF_Parser();
Error StartParse(const RetainPtr<IFX_SeekableReadStream>& pFile,
- const char* password);
+ const ByteString& password);
Error StartLinearizedParse(const RetainPtr<CPDF_ReadValidator>& validator,
- const char* password);
+ const ByteString& password);
- void SetPassword(const char* password) { m_Password = password; }
+ void SetPassword(const ByteString& password) { m_Password = password; }
ByteString GetPassword() const { return m_Password; }
// Take the GetPassword() value and encode it, if necessary, based on the