summaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFObjectHandle.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-08-21 18:50:36 +0200
committerJay Berkenbilt <ejb@ql.org>2019-08-22 23:55:16 +0200
commit225cd9dac27d685833156dfc249838cda11cd2ef (patch)
treec839a3bcc99c08150459ca24de5750f4e5a04e10 /libqpdf/QPDFObjectHandle.cc
parentae5bd7102da5d4b456f08790a0efc04c1c42b4a5 (diff)
downloadqpdf-225cd9dac27d685833156dfc249838cda11cd2ef.tar.zst
Protect against coding error of re-entrant parsing
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r--libqpdf/QPDFObjectHandle.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc
index 1b3b64b0..6240395d 100644
--- a/libqpdf/QPDFObjectHandle.cc
+++ b/libqpdf/QPDFObjectHandle.cc
@@ -1714,7 +1714,11 @@ QPDFObjectHandle::parseInternal(PointerHolder<InputSource> input,
// This method must take care not to resolve any objects. Don't
// check the type of any object without first ensuring that it is
// a direct object. Otherwise, doing so may have the side effect
- // of reading the object and changing the file pointer.
+ // of reading the object and changing the file pointer. If you do
+ // this, it will cause a logic error to be thrown from
+ // QPDF::inParse().
+
+ QPDF::ParseGuard pg(context);
empty = false;