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));