Fix out of bound error in CBC_ErrorCorrection::EncodeECC200().

BUG=chromium:912125

Change-Id: I2284962d2c56bd0eb3a4450bd0fdca53953f443a
Reviewed-on: https://pdfium-review.googlesource.com/c/46610
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fxbarcode/datamatrix/BC_ErrorCorrection.cpp b/fxbarcode/datamatrix/BC_ErrorCorrection.cpp
index 9f6a67f..9c6ff7d 100644
--- a/fxbarcode/datamatrix/BC_ErrorCorrection.cpp
+++ b/fxbarcode/datamatrix/BC_ErrorCorrection.cpp
@@ -22,6 +22,7 @@
 
 #include "fxbarcode/datamatrix/BC_ErrorCorrection.h"
 
+#include <algorithm>
 #include <vector>
 
 #include "fxbarcode/datamatrix/BC_Encoder.h"
@@ -201,6 +202,13 @@
       errorSizes[i] = symbolInfo->getErrorLengthForInterleavedBlock();
       startPos[i] = i > 0 ? startPos[i - 1] + dataSizes[i] : 0;
     }
+
+    size_t max_error_sizes =
+        *std::max_element(errorSizes.begin(), errorSizes.end()) * blockCount;
+    sb.Reserve(sb.GetLength() + max_error_sizes);
+    for (size_t i = 0; i < max_error_sizes; ++i)
+      sb.InsertAtBack(0);
+
     for (size_t block = 0; block < blockCount; ++block) {
       WideString temp;
       if (symbolInfo->dataCapacity() > block)