aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_Stream.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2009-10-19 03:58:31 +0200
committerJay Berkenbilt <ejb@ql.org>2009-10-19 03:58:31 +0200
commit734ac1e1d2b3ce10a2da1a7e736a30bdf0bc5cf8 (patch)
treecad02f21cf00a93e4209f74ab96b96f707dd0aaa /libqpdf/QPDF_Stream.cc
parent70ae58c0355e06cfe7d97426b28a61ab419ef276 (diff)
downloadqpdf-734ac1e1d2b3ce10a2da1a7e736a30bdf0bc5cf8.tar.zst
deal with stream-specific crypt filters
git-svn-id: svn+q:///qpdf/trunk@827 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libqpdf/QPDF_Stream.cc')
-rw-r--r--libqpdf/QPDF_Stream.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc
index a9e2ec51..6642a06e 100644
--- a/libqpdf/QPDF_Stream.cc
+++ b/libqpdf/QPDF_Stream.cc
@@ -136,6 +136,13 @@ QPDF_Stream::filterable(std::vector<std::string>& filters,
filterable = false;
}
}
+ else if (((key == "/Type") || (key == "/Name")) &&
+ decode_obj.getKey("/Type").isName() &&
+ (decode_obj.getKey("/Type").getName() ==
+ "/CryptFilterDecodeParms"))
+ {
+ // we handle this in decryptStream
+ }
else
{
filterable = false;
@@ -212,7 +219,8 @@ QPDF_Stream::filterable(std::vector<std::string>& filters,
iter != filters.end(); ++iter)
{
std::string const& filter = *iter;
- if (! ((filter == "/FlateDecode") ||
+ if (! ((filter == "/Crypt") ||
+ (filter == "/FlateDecode") ||
(filter == "/LZWDecode") ||
(filter == "/ASCII85Decode") ||
(filter == "/ASCIIHexDecode")))
@@ -266,7 +274,11 @@ QPDF_Stream::pipeStreamData(Pipeline* pipeline, bool filter,
iter != filters.rend(); ++iter)
{
std::string const& filter = *iter;
- if (filter == "/FlateDecode")
+ if (filter == "/Crypt")
+ {
+ // Ignore -- handled by pipeStreamData
+ }
+ else if (filter == "/FlateDecode")
{
if (predictor == 12)
{