summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2024-12-18 13:27:14 -0500
committerGlenn Smith <glenn@vector35.com>2024-12-18 13:27:14 -0500
commit3bef4145c89405d3197a1b2a570c31a7bedc1431 (patch)
tree4dc41b1c43923427b428a10ed86ea9f1c3849ffb
parentcfb83befbdeb6765fbb71d461495aa8abd66c40f (diff)
Fix crash when demangling certain names
Fixes #6261
-rw-r--r--demangler/gnu3/demangle_gnu3.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/demangler/gnu3/demangle_gnu3.cpp b/demangler/gnu3/demangle_gnu3.cpp
index 26dc99fe..bd96b3f7 100644
--- a/demangler/gnu3/demangle_gnu3.cpp
+++ b/demangler/gnu3/demangle_gnu3.cpp
@@ -88,9 +88,14 @@ static void ExtendTypeName(TypeBuilder& type, const string& extend)
qn.back() += extend;
else
qn.push_back(extend);
- type.SetNamedTypeReference(
- NamedTypeReference::GenerateAutoDemangledTypeReference(type.GetNamedTypeReference()->GetTypeReferenceClass(), qn)
- );
+
+ // This type might not be an NTR (Vector35/binaryninja-api#6261)
+ if (type.GetClass() == NamedTypeReferenceClass)
+ {
+ type.SetNamedTypeReference(
+ NamedTypeReference::GenerateAutoDemangledTypeReference(type.GetNamedTypeReference()->GetTypeReferenceClass(), qn)
+ );
+ }
}