aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFWriter.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-05-20 19:32:59 +0200
committerJay Berkenbilt <ejb@ql.org>2022-05-20 19:33:30 +0200
commit6c2fb5b8f0015b655edec9c6c44c3bbef44d03ba (patch)
treedea831e7e2dd609be1ffcc66c8e882996ea633de /libqpdf/QPDFWriter.cc
parentd06509808957305ed01497568ddd81a2590362f8 (diff)
downloadqpdf-6c2fb5b8f0015b655edec9c6c44c3bbef44d03ba.tar.zst
Add test for bad data and bad datafile
Diffstat (limited to 'libqpdf/QPDFWriter.cc')
-rw-r--r--libqpdf/QPDFWriter.cc23
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;