Make FPDFPage_GetAnnot() return nullptr for bad entries.
BUG=pdfium:1255
Change-Id: Ibe1ef349832d20dc1a43bc7ddf7865fa5a6c395a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/51310
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/fpdfsdk/fpdf_annot.cpp b/fpdfsdk/fpdf_annot.cpp
index 7f3fac3..62b294d 100644
--- a/fpdfsdk/fpdf_annot.cpp
+++ b/fpdfsdk/fpdf_annot.cpp
@@ -269,6 +269,9 @@
return nullptr;
CPDF_Dictionary* pDict = ToDictionary(pAnnots->GetDirectObjectAt(index));
+ if (!pDict)
+ return nullptr;
+
auto pNewAnnot = pdfium::MakeUnique<CPDF_AnnotContext>(pDict, pPage);
// Caller takes ownership.
diff --git a/fpdfsdk/fpdf_annot_embeddertest.cpp b/fpdfsdk/fpdf_annot_embeddertest.cpp
index 7807684..b43940b 100644
--- a/fpdfsdk/fpdf_annot_embeddertest.cpp
+++ b/fpdfsdk/fpdf_annot_embeddertest.cpp
@@ -72,11 +72,7 @@
ASSERT_TRUE(page);
EXPECT_EQ(1, FPDFPage_GetAnnotCount(page));
- {
- ScopedFPDFAnnotation annot(FPDFPage_GetAnnot(page, 0));
- ASSERT_TRUE(annot);
- EXPECT_EQ(-1, FPDFPage_GetAnnotIndex(page, annot.get()));
- }
+ EXPECT_FALSE(FPDFPage_GetAnnot(page, 0));
UnloadPage(page);
}