aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-08-20 03:23:39 +0200
committerJay Berkenbilt <ejb@ql.org>2019-08-20 03:43:44 +0200
commit8a9086a6894e83ebc60fbd39cb835b20aa2683b1 (patch)
tree6992c28607069c4b32b670de7b156359b15a6038 /libqpdf/QPDF.cc
parent43f91f58b8e1be986646129c2fb3229de67ba42f (diff)
downloadqpdf-8a9086a6894e83ebc60fbd39cb835b20aa2683b1.tar.zst
Accept extraneous space after stream keyword (fixes #329)
Diffstat (limited to 'libqpdf/QPDF.cc')
-rw-r--r--libqpdf/QPDF.cc24
1 files changed, 18 insertions, 6 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 23545d1a..e83dfa09 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -1477,8 +1477,13 @@ QPDF::readObject(PointerHolder<InputSource> input,
// stream data. However, some readers, including
// Adobe reader, accept a carriage return by itself
// when followed by a non-newline character, so that's
- // what we do here.
+ // what we do here. We have also seen files that have
+ // extraneous whitespace between the stream keyword and
+ // the newline.
+ bool done = false;
+ while (! done)
{
+ done = true;
char ch;
if (input->read(&ch, 1) == 0)
{
@@ -1519,14 +1524,21 @@ QPDF::readObject(PointerHolder<InputSource> input,
}
}
}
+ else if (QUtil::is_space(ch))
+ {
+ warn(QPDFExc(
+ qpdf_e_damaged_pdf,
+ input->getName(),
+ this->m->last_object_description,
+ input->tell(),
+ "stream keyword followed by"
+ " extraneous whitespace"));
+ done = false;
+ }
else
{
QTC::TC("qpdf", "QPDF stream without newline");
- if (! QUtil::is_space(ch))
- {
- QTC::TC("qpdf", "QPDF stream with non-space");
- input->unreadCh(ch);
- }
+ input->unreadCh(ch);
warn(QPDFExc(qpdf_e_damaged_pdf, input->getName(),
this->m->last_object_description,
input->tell(),