From 38c9ed23c3d05c6c217db287ae15c97498a69dd7 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Fri, 22 Jun 2018 10:44:08 -0400 Subject: [PATCH] Treat content stream parsing errors as an error, not a warning If parsing content streams is treated as a warning, there is no way for a caller to know if a parsing operation has failed. This is very dangerous and will likely result in data loss when token filters are parser callbacks are in use. --- libqpdf/QPDFObjectHandle.cc | 7 +++---- qpdf/qtest/qpdf/split-content-stream-errors.out | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index d1bc58ca..f4a8a0a4 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -1290,10 +1290,9 @@ QPDFObjectHandle::pipeContentStreams( if (! stream.pipeStreamData(p, 0, qpdf_dl_specialized)) { QTC::TC("qpdf", "QPDFObjectHandle errors in parsecontent"); - warn(stream.getOwningQPDF(), - QPDFExc(qpdf_e_damaged_pdf, "content stream", - description, 0, - "errors while decoding content stream")); + throw QPDFExc(qpdf_e_damaged_pdf, "content stream", + description, 0, + "errors while decoding content stream"); } } } diff --git a/qpdf/qtest/qpdf/split-content-stream-errors.out b/qpdf/qtest/qpdf/split-content-stream-errors.out index c033c8d1..0486355f 100644 --- a/qpdf/qtest/qpdf/split-content-stream-errors.out +++ b/qpdf/qtest/qpdf/split-content-stream-errors.out @@ -6,4 +6,4 @@ WARNING: split-content-stream-errors.pdf (offset 557): error decoding stream dat WARNING: split-content-stream-errors.pdf (offset 557): stream will be re-processed without filtering to avoid data loss WARNING: page object 3 0 (item index 0 (from 0)): ignoring non-stream in an array of streams WARNING: split-content-stream-errors.pdf (offset 557): error decoding stream data for object 6 0: LZWDecoder: bad code received -WARNING: content stream (content stream object 6 0): errors while decoding content stream +page 1: content stream (content stream object 6 0): errors while decoding content stream