Improve page type comparisons.
- Make sure the /Type entry is a name.
- Use `pdfium::page_object::kType` constant.
- Use operator== instead of Compare().
Change-Id: Ib484c6d224bcc67d630b32ab9d70a4fa44b818ec
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/79873
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 7c7f2c6..6e71924 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -25,6 +25,7 @@
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
+#include "core/fpdfapi/parser/cpdf_name.h"
#include "core/fpdfapi/parser/cpdf_number.h"
#include "core/fpdfapi/parser/cpdf_string.h"
#include "core/fpdfapi/render/cpdf_docrenderdata.h"
@@ -60,11 +61,12 @@
return false;
const CPDF_Dictionary* pFormDict = pPage->GetDict();
- if (!pFormDict->KeyExist("Type"))
+ if (!pFormDict->KeyExist(pdfium::page_object::kType))
return false;
- const CPDF_Object* pObject = pFormDict->GetObjectFor("Type")->GetDirect();
- return pObject && pObject->GetString().Compare("Page") == 0;
+ const CPDF_Name* pName =
+ ToName(pFormDict->GetObjectFor(pdfium::page_object::kType)->GetDirect());
+ return pName && pName->GetString() == "Page";
}
void CalcBoundingBox(CPDF_PageObject* pPageObj) {
diff --git a/fpdfsdk/fpdf_ppo.cpp b/fpdfsdk/fpdf_ppo.cpp
index 554c210..6b39aec 100644
--- a/fpdfsdk/fpdf_ppo.cpp
+++ b/fpdfsdk/fpdf_ppo.cpp
@@ -146,11 +146,9 @@
return nullptr;
}
- const CPDF_Object* pType =
- pDict->GetObjectFor(pdfium::page_object::kType)->GetDirect();
- if (!ToName(pType))
- return nullptr;
- if (pType->GetString().Compare("Page") != 0)
+ const CPDF_Name* pName =
+ ToName(pDict->GetObjectFor(pdfium::page_object::kType)->GetDirect());
+ if (!pName || pName->GetString() != "Page")
return nullptr;
const CPDF_Dictionary* pp = ToDictionary(