Fix a crash in FPDF_StructElement_GetLang()
Returns early if dict is null in GetLang
Change-Id: I0fe4f934fa4836ea22ae7404fcf5dfda40ba507f
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/90471
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_structtree.cpp b/fpdfsdk/fpdf_structtree.cpp
index a162d7c..5dc4ec1 100644
--- a/fpdfsdk/fpdf_structtree.cpp
+++ b/fpdfsdk/fpdf_structtree.cpp
@@ -111,6 +111,8 @@
CPDF_StructElement* elem =
CPDFStructElementFromFPDFStructElement(struct_element);
const CPDF_Dictionary* dict = elem ? elem->GetDict() : nullptr;
+ if (!dict)
+ return 0;
const CPDF_Object* obj = dict->GetObjectFor("Lang");
if (!obj || !obj->IsString())
return 0;
diff --git a/fpdfsdk/fpdf_structtree_embeddertest.cpp b/fpdfsdk/fpdf_structtree_embeddertest.cpp
index 3594f24..6a57631 100644
--- a/fpdfsdk/fpdf_structtree_embeddertest.cpp
+++ b/fpdfsdk/fpdf_structtree_embeddertest.cpp
@@ -285,6 +285,9 @@
EXPECT_EQ(18U, FPDF_StructElement_GetType(document, buffer, kBufLen));
EXPECT_EQ("Document", GetPlatformString(buffer));
+ // Nullptr test
+ EXPECT_EQ(0U, FPDF_StructElement_GetLang(nullptr, buffer, kBufLen));
+
// The document has a language.
EXPECT_EQ(12U, FPDF_StructElement_GetLang(document, buffer, kBufLen));
EXPECT_EQ("en-US", GetPlatformString(buffer));