diff options
Diffstat (limited to 'core/fpdfapi/edit/cpdf_creator.cpp')
-rw-r--r-- | core/fpdfapi/edit/cpdf_creator.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp index 71237f7915..8a9eb5493e 100644 --- a/core/fpdfapi/edit/cpdf_creator.cpp +++ b/core/fpdfapi/edit/cpdf_creator.cpp @@ -164,13 +164,13 @@ bool CPDF_Creator::WriteStream(const CPDF_Object* pStream, uint32_t objnum, CPDF_CryptoHandler* pCrypto) { CPDF_FlateEncoder encoder(pStream->AsStream(), pStream != m_pMetadata); - CPDF_Encryptor encryptor(pCrypto, objnum, encoder.GetData(), - encoder.GetSize()); + CPDF_Encryptor encryptor( + pCrypto, objnum, pdfium::make_span(encoder.GetData(), encoder.GetSize())); if (static_cast<uint32_t>(encoder.GetDict()->GetIntegerFor("Length")) != - encryptor.GetSize()) { + encryptor.GetSpan().size()) { encoder.CloneDict(); encoder.GetClonedDict()->SetNewFor<CPDF_Number>( - "Length", static_cast<int>(encryptor.GetSize())); + "Length", static_cast<int>(encryptor.GetSpan().size())); } if (!WriteDirectObj(objnum, encoder.GetDict(), true) || @@ -179,8 +179,9 @@ bool CPDF_Creator::WriteStream(const CPDF_Object* pStream, } // Allow for empty streams. - if (encryptor.GetSize() > 0 && - !m_Archive->WriteBlock(encryptor.GetData(), encryptor.GetSize())) { + if (encryptor.GetSpan().size() > 0 && + !m_Archive->WriteBlock(encryptor.GetSpan().data(), + encryptor.GetSpan().size())) { return false; } @@ -224,28 +225,32 @@ bool CPDF_Creator::WriteDirectObj(uint32_t objnum, return false; break; } - CPDF_Encryptor encryptor(GetCryptoHandler(), objnum, - reinterpret_cast<const uint8_t*>(str.c_str()), - str.GetLength()); + CPDF_Encryptor encryptor( + GetCryptoHandler(), objnum, + pdfium::make_span(reinterpret_cast<const uint8_t*>(str.c_str()), + str.GetLength())); ByteString content = PDF_EncodeString( - ByteString(encryptor.GetData(), encryptor.GetSize()), bHex); + ByteString(encryptor.GetSpan().data(), encryptor.GetSpan().size()), + bHex); if (!m_Archive->WriteString(content.AsStringView())) return false; break; } case CPDF_Object::STREAM: { CPDF_FlateEncoder encoder(pObj->AsStream(), true); - CPDF_Encryptor encryptor(GetCryptoHandler(), objnum, encoder.GetData(), - encoder.GetSize()); + CPDF_Encryptor encryptor( + GetCryptoHandler(), objnum, + pdfium::make_span(encoder.GetData(), encoder.GetSize())); if (static_cast<uint32_t>(encoder.GetDict()->GetIntegerFor("Length")) != - encryptor.GetSize()) { + encryptor.GetSpan().size()) { encoder.CloneDict(); encoder.GetClonedDict()->SetNewFor<CPDF_Number>( - "Length", static_cast<int>(encryptor.GetSize())); + "Length", static_cast<int>(encryptor.GetSpan().size())); } if (!WriteDirectObj(objnum, encoder.GetDict(), true) || !m_Archive->WriteString("stream\r\n") || - !m_Archive->WriteBlock(encryptor.GetData(), encryptor.GetSize()) || + !m_Archive->WriteBlock(encryptor.GetSpan().data(), + encryptor.GetSpan().size()) || !m_Archive->WriteString("\r\nendstream")) { return false; } |