aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2018-01-13 19:18:36 +0100
committerJay Berkenbilt <ejb@ql.org>2018-01-14 01:49:42 +0100
commitbe27d47bdc1195f425821d479b9ca733051343c0 (patch)
treecabf4760d22ad30a5a25d708f084399becce7df2
parent48864b8d6eecc5bbd42029df0e2608621ce7d0bc (diff)
downloadqpdf-be27d47bdc1195f425821d479b9ca733051343c0.tar.zst
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.
-rw-r--r--libqpdf/QPDF_Stream.cc4
-rw-r--r--qpdf/qtest/qpdf/issue-148.out5
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