diff options
author | Jay Berkenbilt <ejb@ql.org> | 2013-07-07 23:26:03 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2013-07-08 01:43:16 +0200 |
commit | b84f57e56d87691d6e592d1ff0b42d186cc70b98 (patch) | |
tree | b91599e8a1ee33314a99b2c4c09cc56f67f8b0e7 /libqpdf/QPDF_Stream.cc | |
parent | a2696ac27107415c701e7799f1811e9641e7c14d (diff) | |
download | qpdf-b84f57e56d87691d6e592d1ff0b42d186cc70b98.tar.zst |
Ignore broken DecodeParms for stream with no filters
Diffstat (limited to 'libqpdf/QPDF_Stream.cc')
-rw-r--r-- | libqpdf/QPDF_Stream.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index 6ca88caf..0a82f22b 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -295,8 +295,13 @@ QPDF_Stream::filterable(std::vector<std::string>& filters, } } - if (decode_parms.size() != filters.size()) + // Ignore /DecodeParms entirely if /Filters is empty. At least + // one case of a file whose /DecodeParms was [ << >> ] when + // /Filters was empty has been seen in the wild. + if ((filters.size() != 0) && (decode_parms.size() != filters.size())) { + // We should just issue a warning and treat this as not + // filterable. throw QPDFExc(qpdf_e_damaged_pdf, qpdf->getFilename(), "", this->offset, "stream /DecodeParms length is" |