From b9049f1fda24641f08c3ae6029292ba0b1b0dc53 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Thu, 5 Jun 2025 12:30:06 -0400 Subject: Fix crash in GNU3 demangler with specific non-mangled string Fixes https://github.com/Vector35/binaryninja-api/issues/6902 however we still need to figure out what we want to do about the type info names being invalid. There really is not a good way to tell without saying all type info names _must_ be mangled. --- demangler/gnu3/demangle_gnu3.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'demangler/gnu3/demangle_gnu3.cpp') diff --git a/demangler/gnu3/demangle_gnu3.cpp b/demangler/gnu3/demangle_gnu3.cpp index 28ab0f2b..d020ed72 100644 --- a/demangler/gnu3/demangle_gnu3.cpp +++ b/demangler/gnu3/demangle_gnu3.cpp @@ -2180,7 +2180,10 @@ TypeBuilder DemangleGNU3::DemangleSymbol(QualifiedName& varName) else if (ext == ".eh_frame") ext = "exception handler frame"; else if (ext == ".eh_frame_hdr") ext = "exception handler frame header"; else if (ext == ".debug_frame") ext = "debug frame"; - varName.back() += ext; + + // On the off chance some invalid mangled string is passed in. + if (varName.size() > 0) + varName.back() += ext; break; } -- cgit v1.3.1