diff options
| author | Mason Reed <mason@vector35.com> | 2025-06-05 12:30:06 -0400 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2025-06-05 12:31:07 -0400 |
| commit | b9049f1fda24641f08c3ae6029292ba0b1b0dc53 (patch) | |
| tree | 3401274e3b772e5eb10d95242e4799fca51ab154 /demangler | |
| parent | c4efe0ab81183d4e75a36557a00acb2086935947 (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.cpp | 5 |
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; } |
