diff options
author | Wei Li <weili@chromium.org> | 2016-01-05 12:34:00 -0800 |
---|---|---|
committer | Wei Li <weili@chromium.org> | 2016-01-05 12:34:00 -0800 |
commit | aab8f462ea3368ed4825172231131e1a10db978d (patch) | |
tree | 0bc0d0ec6a7b2f6357174a56ca5e43f6c5bfce94 /fpdfsdk | |
parent | ed34cdf99d5a4b33e57f81f9244a311f6fb86db3 (diff) | |
download | pdfium-aab8f462ea3368ed4825172231131e1a10db978d.tar.xz |
Exit infinite loops for cross reference loading
When cross reference sections form a loop, our code will enter an
infinite loop. Add detection and exit code for v4 cross reference loading.
V5 loading was done previously.
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1558093002 .
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/src/fpdfview_embeddertest.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fpdfsdk/src/fpdfview_embeddertest.cpp b/fpdfsdk/src/fpdfview_embeddertest.cpp index 3be96e7aef..0f4666836f 100644 --- a/fpdfsdk/src/fpdfview_embeddertest.cpp +++ b/fpdfsdk/src/fpdfview_embeddertest.cpp @@ -204,3 +204,11 @@ TEST_F(FPDFViewEmbeddertest, Crasher_454695) { TEST_F(FPDFViewEmbeddertest, Hang_298) { EXPECT_FALSE(OpenDocument("bug_298.pdf")); } + +// Test if the document opens without infinite looping. +// Previously this test will hang in a loop inside LoadAllCrossRefV4. After +// the fix, LoadAllCrossRefV4 will return false after detecting a cross +// reference loop. Cross references will be rebuilt successfully. +TEST_F(FPDFViewEmbeddertest, CrossRefV4Loop) { + EXPECT_TRUE(OpenDocument("bug_xrefv4_loop.pdf")); +} |