diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2020-07-24 11:29:27 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-07-30 16:16:02 +0200 |
commit | ed21fa8d6edd97fad3a5b606b3522ab3bff14e05 (patch) | |
tree | 2f00fc94eae35076d6f719fbdb063a5c40456941 /vcl | |
parent | 1dab9a434acd51beb58373017ec293014349f033 (diff) |
xmlsecurity: detect unsigned incremental update between signatures
(cherry picked from commit 7468d5df5ec79783eae84b62bdc5ecf12f0ca255)
Conflicts:
vcl/source/filter/ipdf/pdfdocument.cxx
xmlsecurity/source/pdfio/pdfdocument.cxx
Change-Id: I269ed858852ee7d1275adf340c8cc1565fc30693
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99382
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/filter/ipdf/pdfdocument.cxx | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/vcl/source/filter/ipdf/pdfdocument.cxx b/vcl/source/filter/ipdf/pdfdocument.cxx index 02bde3fcaedb..1afc3167ae91 100644 --- a/vcl/source/filter/ipdf/pdfdocument.cxx +++ b/vcl/source/filter/ipdf/pdfdocument.cxx @@ -147,6 +147,8 @@ bool PDFDocument::RemoveSignature(size_t nPosition) return m_aEditBuffer.good(); } +const std::vector<size_t>& PDFDocument::GetEOFs() const { return m_aEOFs; } + sal_uInt32 PDFDocument::GetNextSignature() { sal_uInt32 nRet = 0; @@ -1979,7 +1981,16 @@ bool PDFCommentElement::Read(SvStream& rStream) m_aComment = aBuf.makeStringAndClear(); if (m_aComment.startsWith("%%EOF")) - m_rDoc.PushBackEOF(rStream.Tell()); + { + sal_uInt64 nPos = rStream.Tell(); + if (ch == '\r') + { + // If the comment ends with a \r\n, count the \n as well to match Adobe Acrobat + // behavior. + nPos += 1; + } + m_rDoc.PushBackEOF(nPos); + } SAL_INFO("vcl.filter", "PDFCommentElement::Read: m_aComment is '" << m_aComment << "'"); return true; |