summaryrefslogtreecommitdiff
path: root/demangler
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-06-05 12:30:06 -0400
committerMason Reed <mason@vector35.com>2025-06-05 12:31:07 -0400
commitb9049f1fda24641f08c3ae6029292ba0b1b0dc53 (patch)
tree3401274e3b772e5eb10d95242e4799fca51ab154 /demangler
parentc4efe0ab81183d4e75a36557a00acb2086935947 (diff)
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.
Diffstat (limited to 'demangler')
-rw-r--r--demangler/gnu3/demangle_gnu3.cpp5
1 files changed, 4 insertions, 1 deletions
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;
}