aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2020-10-22 21:19:48 +0200
committerJay Berkenbilt <ejb@ql.org>2020-10-22 21:39:36 +0200
commit8a11feacc32aa5dcf0130d7499535624805fc87e (patch)
tree5e5ba87c4e6bad0740e0635de8599951dbeeedcd /libqpdf/QPDF.cc
parent30bb4c64eeddef030132e467c6388d5695a4117c (diff)
downloadqpdf-8a11feacc32aa5dcf0130d7499535624805fc87e.tar.zst
Avoid leak by resolving object streams more than once (fuzz issue 23642)
Diffstat (limited to 'libqpdf/QPDF.cc')
-rw-r--r--libqpdf/QPDF.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 2ffd4cc6..d256e444 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -2082,6 +2082,11 @@ QPDF::resolve(int objid, int generation)
void
QPDF::resolveObjectsInStream(int obj_stream_number)
{
+ if (this->m->resolved_object_streams.count(obj_stream_number))
+ {
+ return;
+ }
+ this->m->resolved_object_streams.insert(obj_stream_number);
// Force resolution of object stream
QPDFObjectHandle obj_stream = getObjectByID(obj_stream_number, 0);
if (! obj_stream.isStream())