diff options
author | Jay Berkenbilt <ejb@ql.org> | 2009-10-19 03:58:31 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2009-10-19 03:58:31 +0200 |
commit | 734ac1e1d2b3ce10a2da1a7e736a30bdf0bc5cf8 (patch) | |
tree | cad02f21cf00a93e4209f74ab96b96f707dd0aaa /libqpdf/QPDF_Stream.cc | |
parent | 70ae58c0355e06cfe7d97426b28a61ab419ef276 (diff) | |
download | qpdf-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.cc | 16 |
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) { |