From be27d47bdc1195f425821d479b9ca733051343c0 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 13 Jan 2018 13:18:36 -0500 Subject: Use better error for getStreamData failure If the stream isn't filterable but we call getStreamData, throw a regular exception instead of a logic error so that normal error handling and reporting mechanisms will be used. --- libqpdf/QPDF_Stream.cc | 4 +++- qpdf/qtest/qpdf/issue-148.out | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index 62d6a553..351df043 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -96,7 +96,9 @@ QPDF_Stream::getStreamData(qpdf_stream_decode_level_e decode_level) Pl_Buffer buf("stream data buffer"); if (! pipeStreamData(&buf, 0, decode_level, false, false)) { - throw std::logic_error("getStreamData called on unfilterable stream"); + throw QPDFExc(qpdf_e_unsupported, qpdf->getFilename(), + "", this->offset, + "getStreamData called on unfilterable stream"); } QTC::TC("qpdf", "QPDF_Stream getStreamData"); return buf.getBuffer(); diff --git a/qpdf/qtest/qpdf/issue-148.out b/qpdf/qtest/qpdf/issue-148.out index 9cc9ac83..cde322d6 100644 --- a/qpdf/qtest/qpdf/issue-148.out +++ b/qpdf/qtest/qpdf/issue-148.out @@ -4,4 +4,7 @@ WARNING: issue-148.pdf (xref stream: object 8 0, file position 73): attempting t WARNING: issue-148.pdf (xref stream: object 8 0, file position 73): recovered stream length: 2 WARNING: issue-148.pdf (xref stream: object 8 0, file position 85): expected endobj WARNING: issue-148.pdf (file position 73): error decoding stream data for object 8 0: stream inflate: inflate: data: incorrect header check -getStreamData called on unfilterable stream +WARNING: issue-148.pdf: file is damaged +WARNING: issue-148.pdf (file position 73): getStreamData called on unfilterable stream +WARNING: issue-148.pdf: Attempting to reconstruct cross-reference table +issue-148.pdf: unable to find trailer dictionary while recovering damaged file -- cgit v1.2.3-54-g00ecf