summaryrefslogtreecommitdiff
path: root/fpdfsdk/src/fpdfformfill_embeddertest.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-09-09 09:58:10 -0700
committerTom Sepez <tsepez@chromium.org>2015-09-09 09:58:10 -0700
commit9241e5a43990859f6f9a94aaa2c488d0451039e3 (patch)
treed59fa133dccca79cb9b2e9da5930cae8aa6ad75e /fpdfsdk/src/fpdfformfill_embeddertest.cpp
parent343dbb841f4c12e819932e2b66dd70f817337d97 (diff)
downloadpdfium-9241e5a43990859f6f9a94aaa2c488d0451039e3.tar.xz
Fix heap use after free in CPDFSDK_Annot::GetPDFAnnot.
Use two seperate loops to kill current focus annot and to release annots in current page. Loop to kill current focus annot is run first, so it will not access deleted annots. BUG=507316 R=tsepez@chromium.org TEST=Reproduction steps mentioned in issue 507316 should not crash chrome. Unit test added to pdfium. Run pdfium_embeddertests.exe. Review URL: https://codereview.chromium.org/1312313006 .
Diffstat (limited to 'fpdfsdk/src/fpdfformfill_embeddertest.cpp')
-rw-r--r--fpdfsdk/src/fpdfformfill_embeddertest.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/fpdfsdk/src/fpdfformfill_embeddertest.cpp b/fpdfsdk/src/fpdfformfill_embeddertest.cpp
index 6baad11531..56710b9f83 100644
--- a/fpdfsdk/src/fpdfformfill_embeddertest.cpp
+++ b/fpdfsdk/src/fpdfformfill_embeddertest.cpp
@@ -40,6 +40,18 @@ TEST_F(FPDFFormFillEmbeddertest, BUG_487928) {
UnloadPage(page);
}
+TEST_F(FPDFFormFillEmbeddertest, BUG_507316) {
+ EmbedderTestTimerHandlingDelegate delegate;
+ SetDelegate(&delegate);
+
+ EXPECT_TRUE(OpenDocument("testing/resources/bug_507316.pdf"));
+ FPDF_PAGE page = LoadAndCachePage(2);
+ EXPECT_NE(nullptr, page);
+ DoOpenActions();
+ delegate.AdvanceTime(4000);
+ UnloadPage(page);
+}
+
TEST_F(FPDFFormFillEmbeddertest, BUG_514690) {
EXPECT_TRUE(OpenDocument("testing/resources/hello_world.pdf"));
FPDF_PAGE page = LoadPage(0);