aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDF.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 27efdd55..86e798ee 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -491,8 +491,10 @@ void
QPDF::read_xref(qpdf_offset_t xref_offset)
{
std::map<int, int> free_table;
+ std::set<qpdf_offset_t> visited;
while (xref_offset)
{
+ visited.insert(xref_offset);
char buf[7];
memset(buf, 0, sizeof(buf));
this->m->file->seek(xref_offset, SEEK_SET);
@@ -520,6 +522,10 @@ QPDF::read_xref(qpdf_offset_t xref_offset)
{
xref_offset = read_xrefStream(xref_offset);
}
+ if (visited.count(xref_offset) != 0)
+ {
+ xref_offset = 0;
+ }
}
if (! this->m->trailer.isInitialized())