diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-05-20 19:32:59 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-05-20 19:33:30 +0200 |
commit | 6c2fb5b8f0015b655edec9c6c44c3bbef44d03ba (patch) | |
tree | dea831e7e2dd609be1ffcc66c8e882996ea633de /libqpdf/QPDFWriter.cc | |
parent | d06509808957305ed01497568ddd81a2590362f8 (diff) | |
download | qpdf-6c2fb5b8f0015b655edec9c6c44c3bbef44d03ba.tar.zst |
Add test for bad data and bad datafile
Diffstat (limited to 'libqpdf/QPDFWriter.cc')
-rw-r--r-- | libqpdf/QPDFWriter.cc | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 35041249..70c65c5d 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -1419,14 +1419,21 @@ QPDFWriter::willFilterStream( pushPipeline(new Pl_Buffer("stream data")); PipelinePopper pp_stream_data(this, stream_data); activatePipelineStack(pp_stream_data); - filtered = stream.pipeStreamData( - this->m->pipeline, - (((filter && normalize) ? qpdf_ef_normalize : 0) | - ((filter && compress_stream) ? qpdf_ef_compress : 0)), - (filter ? (uncompress ? qpdf_dl_all : this->m->stream_decode_level) - : qpdf_dl_none), - false, - (attempt == 1)); + try { + filtered = stream.pipeStreamData( + this->m->pipeline, + (((filter && normalize) ? qpdf_ef_normalize : 0) | + ((filter && compress_stream) ? qpdf_ef_compress : 0)), + (filter + ? (uncompress ? qpdf_dl_all : this->m->stream_decode_level) + : qpdf_dl_none), + false, + (attempt == 1)); + } catch (std::runtime_error& e) { + throw std::runtime_error( + "error while getting stream data for " + stream.unparse() + + ": " + e.what()); + } if (filter && (!filtered)) { // Try again filter = false; |