summaryrefslogtreecommitdiff
path: root/fpdfsdk
diff options
context:
space:
mode:
authorWei Li <weili@chromium.org>2016-01-11 14:16:10 -0800
committerWei Li <weili@chromium.org>2016-01-11 14:16:10 -0800
commitf2b300af96e05bb372664752a64f6ab506820a12 (patch)
tree861da2db3fc42ad79876aa93a8c9d763fd3c262f /fpdfsdk
parent884a7d3b64d220e95548492e28549615a7f86827 (diff)
downloadpdfium-f2b300af96e05bb372664752a64f6ab506820a12.tar.xz
Merge to XFA: Fix an infinite loop parsing in CPDF_SyntaxParser::GetObject()
CPDF_SyntaxParser::GetObject() may enter into an infinite loop when a signature dictionary doesn't have 'Contents' field. Add a check to avoid that. BUG=pdfium:344 TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/1575833004 . (cherry picked from commit d3ab0f383f6736657480a8bb418c5e715a1aed3b) Review URL: https://codereview.chromium.org/1571333004 .
Diffstat (limited to 'fpdfsdk')
-rw-r--r--fpdfsdk/src/fpdfview_embeddertest.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/fpdfsdk/src/fpdfview_embeddertest.cpp b/fpdfsdk/src/fpdfview_embeddertest.cpp
index 6a6d076983..3147c01660 100644
--- a/fpdfsdk/src/fpdfview_embeddertest.cpp
+++ b/fpdfsdk/src/fpdfview_embeddertest.cpp
@@ -221,4 +221,10 @@ TEST_F(FPDFViewEmbeddertest, CrossRefV4Loop) {
// cause infinite loop.
TEST_F(FPDFViewEmbeddertest, Hang_343) {
EXPECT_FALSE(OpenDocument("bug_343.pdf"));
+}
+
+// The test should pass when the absence of 'Contents' field in a signature
+// dictionary will not cause an infinite loop in CPDF_SyntaxParser::GetObject().
+TEST_F(FPDFViewEmbeddertest, Hang_344) {
+ EXPECT_FALSE(OpenDocument("bug_344.pdf"));
} \ No newline at end of file