Add test for maximum WeightTable size.

Change-Id: I48fa7f60dc579f674ed1d35d2c0e1faa8bad0a59
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/82172
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxge/dib/cstretchengine_unittest.cpp b/core/fxge/dib/cstretchengine_unittest.cpp
index 2053155..888a3d9 100644
--- a/core/fxge/dib/cstretchengine_unittest.cpp
+++ b/core/fxge/dib/cstretchengine_unittest.cpp
@@ -16,6 +16,10 @@
 
 namespace {
 
+// Discovered experimentally
+constexpr uint32_t kTooBigSrcLen = 20;
+constexpr uint32_t kTooBigDestLen = 32 * 1024 * 1024 + 1;
+
 uint32_t PixelWeightSum(const CStretchEngine::PixelWeight* weights) {
   uint32_t sum = 0;
   for (int i = weights->m_SrcStart; i <= weights->m_SrcEnd; ++i) {
@@ -141,3 +145,11 @@
   CStretchEngine::WeightTable table;
   ASSERT_TRUE(table.CalculateWeights(0, 0, 0, 100, 0, 100, options));
 }
+
+TEST(CStretchEngine, TooManyWeights) {
+  FXDIB_ResampleOptions options;
+  CStretchEngine::WeightTable table;
+  ASSERT_FALSE(table.CalculateWeights(kTooBigDestLen, 0, kTooBigDestLen,
+                                      kTooBigSrcLen, 0, kTooBigSrcLen,
+                                      options));
+}