From 6c2fb5b8f0015b655edec9c6c44c3bbef44d03ba Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Fri, 20 May 2022 13:32:59 -0400 Subject: Add test for bad data and bad datafile --- libqpdf/QPDFWriter.cc | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'libqpdf') 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; -- cgit v1.2.3-54-g00ecf