summaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2013-07-07 23:26:03 +0200
committerJay Berkenbilt <ejb@ql.org>2013-07-08 01:43:16 +0200
commitb84f57e56d87691d6e592d1ff0b42d186cc70b98 (patch)
treeb91599e8a1ee33314a99b2c4c09cc56f67f8b0e7 /libqpdf
parenta2696ac27107415c701e7799f1811e9641e7c14d (diff)
downloadqpdf-b84f57e56d87691d6e592d1ff0b42d186cc70b98.tar.zst
Ignore broken DecodeParms for stream with no filters
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDF_Stream.cc7
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"