summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2014-11-03 19:11:25 +0100
committerAlbert Astals Cid <aacid@kde.org>2014-11-03 19:11:25 +0100
commitd6ea8acbb348fdb43601a963ba5407e933565003 (patch)
treea82cbe956d1e7710032ce42cc49adda5548028a8
parentbd142810b9f66b017a58b3e1840d4d72794f1ef4 (diff)
fix crash in Xref::getEntry
Bug 85234
-rw-r--r--poppler/XRef.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/poppler/XRef.cc b/poppler/XRef.cc
index 2560e3dc..333f5ec9 100644
--- a/poppler/XRef.cc
+++ b/poppler/XRef.cc
@@ -1568,7 +1568,7 @@ GBool XRef::parseEntry(Goffset offset, XRefEntry *entry)
void XRef::readXRefUntil(int untilEntryNum, std::vector<int> *xrefStreamObjsNum)
{
std::vector<Goffset> followedPrev;
- while (prevXRefOffset && (untilEntryNum == -1 || entries[untilEntryNum].type == xrefEntryNone)) {
+ while (prevXRefOffset && (untilEntryNum == -1 || (untilEntryNum < size && entries[untilEntryNum].type == xrefEntryNone))) {
bool followed = false;
for (size_t j = 0; j < followedPrev.size(); j++) {
if (followedPrev.at(j) == prevXRefOffset) {
@@ -1606,7 +1606,7 @@ void XRef::readXRefUntil(int untilEntryNum, std::vector<int> *xrefStreamObjsNum)
XRefEntry *XRef::getEntry(int i, GBool complainIfMissing)
{
- if (entries[i].type == xrefEntryNone) {
+ if (i >= size || entries[i].type == xrefEntryNone) {
if ((!xRefStream) && mainXRefEntriesOffset) {
if (!parseEntry(mainXRefEntriesOffset + 20*i, &entries[i])) {