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