Make most CPDF_LinearizedHeader members const.

Change-Id: I82907ad725861b9ccd6299f5dfe20ddb9d238178
Reviewed-on: https://pdfium-review.googlesource.com/17796
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_document_unittest.cpp b/core/fpdfapi/parser/cpdf_document_unittest.cpp
index 9e03c96..d1b8dce 100644
--- a/core/fpdfapi/parser/cpdf_document_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_document_unittest.cpp
@@ -133,7 +133,7 @@
 class TestLinearized : public CPDF_LinearizedHeader {
  public:
   explicit TestLinearized(CPDF_Dictionary* dict)
-      : CPDF_LinearizedHeader(dict) {}
+      : CPDF_LinearizedHeader(dict, 0) {}
 };
 
 class CPDF_TestDocPagesWithoutKids : public CPDF_Document {
diff --git a/core/fpdfapi/parser/cpdf_linearized_header.cpp b/core/fpdfapi/parser/cpdf_linearized_header.cpp
index ce22c55..3251a5e 100644
--- a/core/fpdfapi/parser/cpdf_linearized_header.cpp
+++ b/core/fpdfapi/parser/cpdf_linearized_header.cpp
@@ -70,22 +70,25 @@
   if (parser->GetNextWord(nullptr) != "endobj")
     return nullptr;
 
-  auto result = pdfium::WrapUnique(new CPDF_LinearizedHeader(pDict.get()));
-  result->m_szLastXRefOffset = parser->GetPos();
+  auto result = pdfium::WrapUnique(
+      new CPDF_LinearizedHeader(pDict.get(), parser->GetPos()));
 
-  return IsLinearizedHeaderValid(result.get(),
-                                 parser->GetFileAccess()->GetSize())
-             ? std::move(result)
-             : nullptr;
+  if (!IsLinearizedHeaderValid(result.get(),
+                               parser->GetFileAccess()->GetSize())) {
+    return nullptr;
+  }
+  return result;
 }
 
-CPDF_LinearizedHeader::CPDF_LinearizedHeader(const CPDF_Dictionary* pDict) {
-  m_szFileSize = pDict->GetIntegerFor("L");
-  m_dwFirstPageNo = pDict->GetIntegerFor("P");
-  m_szMainXRefTableFirstEntryOffset = pDict->GetIntegerFor("T");
-  m_PageCount = pDict->GetIntegerFor("N");
-  m_szFirstPageEndOffset = pDict->GetIntegerFor("E");
-  m_FirstPageObjNum = pDict->GetIntegerFor("O");
+CPDF_LinearizedHeader::CPDF_LinearizedHeader(const CPDF_Dictionary* pDict,
+                                             FX_FILESIZE szLastXRefOffset)
+    : m_szFileSize(pDict->GetIntegerFor("L")),
+      m_dwFirstPageNo(pDict->GetIntegerFor("P")),
+      m_szMainXRefTableFirstEntryOffset(pDict->GetIntegerFor("T")),
+      m_PageCount(pDict->GetIntegerFor("N")),
+      m_szFirstPageEndOffset(pDict->GetIntegerFor("E")),
+      m_FirstPageObjNum(pDict->GetIntegerFor("O")),
+      m_szLastXRefOffset(szLastXRefOffset) {
   const CPDF_Array* pHintStreamRange = pDict->GetArrayFor("H");
   const size_t nHintStreamSize =
       pHintStreamRange ? pHintStreamRange->GetCount() : 0;
diff --git a/core/fpdfapi/parser/cpdf_linearized_header.h b/core/fpdfapi/parser/cpdf_linearized_header.h
index d732160..964ae26 100644
--- a/core/fpdfapi/parser/cpdf_linearized_header.h
+++ b/core/fpdfapi/parser/cpdf_linearized_header.h
@@ -43,18 +43,19 @@
   uint32_t GetHintLength() const { return m_HintLength; }
 
  protected:
-  explicit CPDF_LinearizedHeader(const CPDF_Dictionary* pDict);
+  CPDF_LinearizedHeader(const CPDF_Dictionary* pDict,
+                        FX_FILESIZE szLastXRefOffset);
 
  private:
-  FX_FILESIZE m_szFileSize = 0;
-  uint32_t m_dwFirstPageNo = 0;
-  FX_FILESIZE m_szMainXRefTableFirstEntryOffset = 0;
-  uint32_t m_PageCount = 0;
-  FX_FILESIZE m_szFirstPageEndOffset = 0;
-  uint32_t m_FirstPageObjNum = 0;
+  const FX_FILESIZE m_szFileSize;
+  const uint32_t m_dwFirstPageNo;
+  const FX_FILESIZE m_szMainXRefTableFirstEntryOffset;
+  const uint32_t m_PageCount;
+  const FX_FILESIZE m_szFirstPageEndOffset;
+  const uint32_t m_FirstPageObjNum;
+  const FX_FILESIZE m_szLastXRefOffset;
   FX_FILESIZE m_szHintStart = 0;
   uint32_t m_HintLength = 0;
-  FX_FILESIZE m_szLastXRefOffset = 0;
 };
 
 #endif  // CORE_FPDFAPI_PARSER_CPDF_LINEARIZED_HEADER_H_
diff --git a/testing/libfuzzer/pdf_hint_table_fuzzer.cc b/testing/libfuzzer/pdf_hint_table_fuzzer.cc
index ac4229a..ee51e25 100644
--- a/testing/libfuzzer/pdf_hint_table_fuzzer.cc
+++ b/testing/libfuzzer/pdf_hint_table_fuzzer.cc
@@ -49,7 +49,7 @@
 class FakeLinearized : public CPDF_LinearizedHeader {
  public:
   explicit FakeLinearized(CPDF_Dictionary* linearized_dict)
-      : CPDF_LinearizedHeader(linearized_dict) {}
+      : CPDF_LinearizedHeader(linearized_dict, 0) {}
 };
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {