Fix comparisons against `kMaxXRefSize`

Make the comparisons for `kMaxXRefSize` consistent with the comparisons
for `kMaxObjectNumber`.

Change-Id: I6b67bca07559243e1ad32e3757767b4fa4331d60
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/135491
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp
index 97a17cc..ec6d99f 100644
--- a/core/fpdfapi/parser/cpdf_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_parser.cpp
@@ -415,7 +415,7 @@
     cross_ref_table_->SetTrailer(std::move(trailer), kNoTrailerObjectNumber);
 
     const int32_t xrefsize = GetTrailer()->GetDirectIntegerFor("Size");
-    if (xrefsize > 0 && xrefsize <= kMaxXRefSize) {
+    if (xrefsize > 0 && xrefsize < kMaxXRefSize) {
       cross_ref_table_->SetObjectMapSize(xrefsize);
     }
   }
@@ -559,7 +559,7 @@
     return false;
   }
 
-  if (new_size.ValueOrDie() > kMaxXRefSize) {
+  if (new_size.ValueOrDie() >= kMaxXRefSize) {
     return false;
   }
 
@@ -913,11 +913,11 @@
     // also ignores incorrect size in trailers for cross reference tables.
     const uint32_t current_size =
         cross_ref_table_->objects_info().empty() ? 0 : GetLastObjNum() + 1;
-    // So allow `new_size` to be greater than `current_size`, but avoid going
-    // over `kMaxXRefSize`. This works just fine because the loop below checks
+    // So allow `new_size` to be greater than `current_size`, but avoid reaching
+    // `kMaxXRefSize`. This works just fine because the loop below checks
     // against `kMaxObjectNumber`, and the two "max" constants are in sync.
     const uint32_t new_size =
-        std::min<uint32_t>(safe_new_size.ValueOrDie(), kMaxXRefSize);
+        std::min<uint32_t>(safe_new_size.ValueOrDie(), kMaxXRefSize - 1);
     if (new_size > current_size) {
       cross_ref_table_->SetObjectMapSize(new_size);
     }