M126: Fix a regression in linearized PDFs that have been edited

Unlike regular PDFs, linearized PDFs can have a XRefStm section in the
first page trailer. The spec is not clear. This code was removed in
https://pdfium-review.googlesource.com/118571. Undo that specific change
and add it back.

Bug: 341973428
Change-Id: I48b8bdff191f4c7313f961850dc5023d48ac19e5
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/119530
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
(cherry picked from commit 59f088efc51f9cb831e8278263c90dfe3935207d)
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/119674
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp
index 09d313f..25b57f9 100644
--- a/core/fpdfapi/parser/cpdf_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_parser.cpp
@@ -487,14 +487,16 @@
     return false;
   }
 
+  // Unlike LoadAllCrossRefTablesAndStreams(), the first XRefStm entry in
+  // `xref_stream_list` should be processed.
+  if (xref_stream_list[0] > 0 &&
+      !LoadCrossRefStream(&xref_stream_list[0], /*is_main_xref=*/false)) {
+    return false;
+  }
+
   // Cross reference table entries take precedence over cross reference stream
   // entries. So process the stream entries first and then give the cross
   // reference tables a chance to overwrite them.
-  //
-  // XRefStm entries should only be used in update sections, so skip
-  // `xref_stream_list[0]`.
-  //
-  // See details in ISO 32000-1:2008, section 7.5.8.4.
   for (size_t i = 1; i < xref_list.size(); ++i) {
     if (xref_stream_list[i] > 0 &&
         !LoadCrossRefStream(&xref_stream_list[i], /*is_main_xref=*/false)) {