summaryrefslogtreecommitdiff
path: root/core/fpdfapi/fpdf_parser/include
diff options
context:
space:
mode:
authorweili <weili@chromium.org>2016-04-22 15:25:14 -0700
committerCommit bot <commit-bot@chromium.org>2016-04-22 15:25:14 -0700
commit90c964fb069bfa9934493481f8ccfefef9c3b3fe (patch)
treec9e3d6ec93f68eb9c241411ec59132761d37d230 /core/fpdfapi/fpdf_parser/include
parent16a2033b3b7e2e348509c9938d77268e85e2b763 (diff)
downloadpdfium-90c964fb069bfa9934493481f8ccfefef9c3b3fe.tar.xz
Add a simple check for V4 cross reference table
Some unknown software generates cross reference table with the claimed object numbers are all off by one. Add a simple verification function to detect this scenario, thus have a chance to rebuild the correct cross reference table. To avoid unnecessary checks and potiential performance hit, we only check for the very first non free entry. BUG=602650 Review URL: https://codereview.chromium.org/1910063004
Diffstat (limited to 'core/fpdfapi/fpdf_parser/include')
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_parser.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_parser.h b/core/fpdfapi/fpdf_parser/include/cpdf_parser.h
index 5331ccafb1..48511e9263 100644
--- a/core/fpdfapi/fpdf_parser/include/cpdf_parser.h
+++ b/core/fpdfapi/fpdf_parser/include/cpdf_parser.h
@@ -114,6 +114,9 @@ class CPDF_Parser {
FX_BOOL IsLinearizedFile(IFX_FileRead* pFileAccess, uint32_t offset);
void SetEncryptDictionary(CPDF_Dictionary* pDict);
void ShrinkObjectMap(uint32_t size);
+ // A simple check whether the cross reference table matches with
+ // the objects.
+ bool VerifyCrossRefV4();
CPDF_Document* m_pDocument;
std::unique_ptr<CPDF_SyntaxParser> m_pSyntax;