diff options
author | Nicolas Pena <npm@chromium.org> | 2017-01-03 14:33:20 -0500 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-01-03 19:50:39 +0000 |
commit | 83c5eaca106f4afed6cceb1b3f336d0146cb10d7 (patch) | |
tree | 2973a1ea01ee822806b3a2f30225ec678a0f98d6 /core/fpdfapi/parser/cpdf_document.h | |
parent | 05f541279ec01dfdc76ad6b8b142fa5f04cd544c (diff) | |
download | pdfium-83c5eaca106f4afed6cceb1b3f336d0146cb10d7.tar.xz |
Force stop of page tree traversal when max level reached
The previous implementation, FindPDFPage, was already doing this since
the recursive call was always with return. Currently, we were trying to
keep going even after reaching max level. The problem is that if the
page tree is not a tree, we might loop forever. This could also be
solved by keeping track of the dictionaries that have been visited, but
this solution takes much less space.
BUG=672172
Change-Id: Ia37aea58e92b6068de69f26736c612aa6a0ff4b3
Reviewed-on: https://pdfium-review.googlesource.com/2138
Commit-Queue: Nicolás Peña <npm@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_document.h')
-rw-r--r-- | core/fpdfapi/parser/cpdf_document.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h index 59154d3ab3..0da6577360 100644 --- a/core/fpdfapi/parser/cpdf_document.h +++ b/core/fpdfapi/parser/cpdf_document.h @@ -138,6 +138,7 @@ class CPDF_Document : public CPDF_IndirectObjectHolder { std::vector<std::pair<CPDF_Dictionary*, size_t>> m_pTreeTraversal; // Index of the next page that will be traversed from the page tree. int m_iNextPageToTraverse; + bool m_bReachedMaxPageLevel; bool m_bLinearized; int m_iFirstPageNo; uint32_t m_dwFirstPageObjNum; |