Commit d9ae41b0574f16298c019c64665f48a287d37a2d
1 parent
9cdf980f
Fix /DecodeParms handling logic inconsistency
Moved the conditional check for /DecodeParms inconsistency into the loop to ensure clearer handling when filters are non-empty. This improves code structure and maintains robustness for edge cases encountered in the wild.
Showing
1 changed file
with
6 additions
and
7 deletions
libqpdf/QPDF_Stream.cc
| @@ -399,13 +399,12 @@ Stream::filterable( | @@ -399,13 +399,12 @@ Stream::filterable( | ||
| 399 | for (auto& item: decode_array) { | 399 | for (auto& item: decode_array) { |
| 400 | decode_parms.emplace_back(item); | 400 | decode_parms.emplace_back(item); |
| 401 | } | 401 | } |
| 402 | - } | ||
| 403 | - | ||
| 404 | - // Ignore /DecodeParms entirely if /Filters is empty. At least one case of a file whose | ||
| 405 | - // /DecodeParms was [ << >> ] when /Filters was empty has been seen in the wild. | ||
| 406 | - if ((filters.size() != 0) && (decode_parms.size() != filters.size())) { | ||
| 407 | - warn("stream /DecodeParms length is inconsistent with filters"); | ||
| 408 | - return false; | 402 | + // Ignore /DecodeParms entirely if /Filters is empty. At least one case of a file whose |
| 403 | + // /DecodeParms was [ << >> ] when /Filters was empty has been seen in the wild. | ||
| 404 | + if (!filters.empty() && decode_parms.size() != filters.size()) { | ||
| 405 | + warn("stream /DecodeParms length is inconsistent with filters"); | ||
| 406 | + return false; | ||
| 407 | + } | ||
| 409 | } | 408 | } |
| 410 | 409 | ||
| 411 | for (size_t i = 0; i < filters.size(); ++i) { | 410 | for (size_t i = 0; i < filters.size(); ++i) { |