Make size types more consistent within FlateModule.

Since the zlib compress() function expects uLong sizes, consistently use
unsigned long types to represent sizes in its caller.

Change-Id: I6094ab144fca19a249ad32a38eca859c26a8f35a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97591
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxcodec/flate/flatemodule.cpp b/core/fxcodec/flate/flatemodule.cpp
index a97c4be..d2a6340 100644
--- a/core/fxcodec/flate/flatemodule.cpp
+++ b/core/fxcodec/flate/flatemodule.cpp
@@ -64,7 +64,7 @@
 bool FlateCompress(unsigned char* dest_buf,
                    unsigned long* dest_size,
                    const unsigned char* src_buf,
-                   uint32_t src_size) {
+                   unsigned long src_size) {
   return compress(dest_buf, dest_size, src_buf, src_size) == Z_OK;
 }
 
@@ -868,15 +868,16 @@
 bool FlateModule::Encode(pdfium::span<const uint8_t> src_span,
                          std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf,
                          uint32_t* dest_size) {
-  const uint8_t* src_buf = src_span.data();
-  FX_SAFE_UINT32 src_size = src_span.size();
-  *dest_size = (src_size + src_size / 1000 + 12).ValueOrDie();
-  dest_buf->reset(FX_Alloc(uint8_t, *dest_size));
-  unsigned long temp_size = *dest_size;
-  if (!FlateCompress(dest_buf->get(), &temp_size, src_buf,
-                     src_size.ValueOrDie())) {
+  const unsigned long src_size =
+      pdfium::base::checked_cast<unsigned long>(src_span.size());
+  pdfium::base::CheckedNumeric<unsigned long> safe_dest_size = src_size;
+  safe_dest_size += src_size / 1000;
+  safe_dest_size += 12;
+  unsigned long temp_size = safe_dest_size.ValueOrDie();
+  dest_buf->reset(FX_Alloc(uint8_t, temp_size));
+  if (!FlateCompress(dest_buf->get(), &temp_size, src_span.data(), src_size))
     return false;
-  }
+
   *dest_size = pdfium::base::checked_cast<uint32_t>(temp_size);
   return true;
 }