Commit bd79138c841c0076f7f45ae9a530f480aeec2633

Authored by Jay Berkenbilt
1 parent a7ef572c

Treat direct page as runtime rather than logic error (fuzz issue 27393)

ChangeLog
  1 +2020-11-11 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * Treat a direct page object as a runtime error rather than a
  4 + logic error since it is actually possible to create a file that
  5 + has this (fuzz issue 27393).
  6 +
1 7 2020-11-09 Jay Berkenbilt <ejb@ql.org>
2 8  
3 9 * Handle "." appearing in --pages not preceded by a numeric range
... ...
fuzz/qpdf_extra/27393.fuzz 0 → 100644
No preview for this file type
libqpdf/QPDFObjectHandle.cc
... ... @@ -1512,9 +1512,11 @@ QPDFObjectHandle::coalesceContentStreams()
1512 1512 {
1513 1513 // Should not be possible for a page object to not have an
1514 1514 // owning PDF unless it was manually constructed in some
1515   - // incorrect way.
1516   - throw std::logic_error("coalesceContentStreams called on object"
1517   - " with no associated PDF file");
  1515 + // incorrect way. However, it can happen in a PDF file whose
  1516 + // page structure is direct, which is against spec but still
  1517 + // possible to hand construct, as in fuzz issue 27393.
  1518 + throw std::runtime_error("coalesceContentStreams called on object"
  1519 + " with no associated PDF file");
1518 1520 }
1519 1521 QPDFObjectHandle new_contents = newStream(qpdf);
1520 1522 this->replaceKey("/Contents", new_contents);
... ...