Handle OOM in CPDF_ContentParser::PrepareContent().

While PDFium is not required to handle OOM in every case, failing
gracefully for extremely large documents early on in the parsing
seems reasonable.

Bug: pdfium:1614
Change-Id: Ibbfdf4120ddf916b2d862d7e8299ece6df955573
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/76170
Reviewed-by: Hui Yingst <nigi@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_contentparser.cpp b/core/fpdfapi/page/cpdf_contentparser.cpp
index b8f2fb9..8b4b5e1 100644
--- a/core/fpdfapi/page/cpdf_contentparser.cpp
+++ b/core/fpdfapi/page/cpdf_contentparser.cpp
@@ -167,7 +167,9 @@
 
   m_Size = safeSize.ValueOrDie();
   m_pData.Reset(
-      std::unique_ptr<uint8_t, FxFreeDeleter>(FX_Alloc(uint8_t, m_Size)));
+      std::unique_ptr<uint8_t, FxFreeDeleter>(FX_TryAlloc(uint8_t, m_Size)));
+  if (!m_pData)
+    return Stage::kComplete;
 
   uint32_t pos = 0;
   for (const auto& stream : m_StreamArray) {