Add an embedder test for a FPDFText_FindNext() crash
Create a test that can reproduce the crash in the reference bug, with
the line that triggers the FPDFText_FindNext() crash commented out.
Bug: pdfium:2104
Change-Id: I89f26d9af0d1a14c44de694a5e1c105475c2f162
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/114530
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Nigi <nigi@chromium.org>
diff --git a/fpdfsdk/fpdf_text_embeddertest.cpp b/fpdfsdk/fpdf_text_embeddertest.cpp
index b9b76b1..425556a 100644
--- a/fpdfsdk/fpdf_text_embeddertest.cpp
+++ b/fpdfsdk/fpdf_text_embeddertest.cpp
@@ -492,6 +492,33 @@
UnloadPage(page);
}
+TEST_F(FPDFTextEmbedderTest, TextSearchTrailingSpace) {
+ ASSERT_TRUE(OpenDocument("hello_world.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ {
+ ScopedFPDFTextPage textpage(FPDFText_LoadPage(page));
+ ASSERT_TRUE(textpage);
+
+ ScopedFPDFWideString search_term = GetFPDFWideString(L"ld! ");
+ ScopedFPDFTextFind search(
+ FPDFText_FindStart(textpage.get(), search_term.get(), 0, 0));
+ ASSERT_TRUE(search);
+ EXPECT_EQ(0, FPDFText_GetSchResultIndex(search.get()));
+ EXPECT_EQ(0, FPDFText_GetSchCount(search.get()));
+
+ EXPECT_TRUE(FPDFText_FindNext(search.get()));
+ EXPECT_EQ(10, FPDFText_GetSchResultIndex(search.get()));
+ EXPECT_EQ(4, FPDFText_GetSchCount(search.get()));
+
+ // TODO(crbug.com/pdfium/2104): Enable the code below. It should not crash.
+ // EXPECT_FALSE(FPDFText_FindNext(search.get()));
+ }
+
+ UnloadPage(page);
+}
+
// Fails on Windows. https://crbug.com/pdfium/1370
#if BUILDFLAG(IS_WIN)
#define MAYBE_TextSearchLatinExtended DISABLED_TextSearchLatinExtended