From df56a46b7c9848f717280f37f12f9b4051edbbee Mon Sep 17 00:00:00 2001 From: Marc Aldorasi Date: Mon, 14 Mar 2016 12:56:11 -0400 Subject: Truncate symbols that are too long --- src/cv2pdb.cpp | 2 +- src/symutil.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cv2pdb.cpp b/src/cv2pdb.cpp index 3c0a20d..8a94a58 100644 --- a/src/cv2pdb.cpp +++ b/src/cv2pdb.cpp @@ -3016,7 +3016,7 @@ bool CV2PDB::addUdtSymbol(int type, const char* name) codeview_symbol* sym = (codeview_symbol*) (udtSymbols + cbUdtSymbols); sym->udt_v1.id = S_UDT_V1; sym->udt_v1.type = translateType(type); - strcpy (sym->udt_v1.p_name.name, name ? name : ""); // allow anonymous typedefs + cstrcpy_v (true, (BYTE*)sym->udt_v1.p_name.name, name ? name : ""); // allow anonymous typedefs sym->udt_v1.p_name.namelen = strlen(sym->udt_v1.p_name.name); sym->udt_v1.len = sizeof(sym->udt_v1) + sym->udt_v1.p_name.namelen - 1 - 2; cbUdtSymbols += sym->udt_v1.len + 2; diff --git a/src/symutil.cpp b/src/symutil.cpp index 3b4c1c6..f9ffa00 100644 --- a/src/symutil.cpp +++ b/src/symutil.cpp @@ -4,6 +4,8 @@ // License for redistribution is given by the Artistic License 2.0 // see file LICENSE for further details +#include + #include "symutil.h" #include "demangle.h" @@ -266,8 +268,10 @@ int cstrcpy_v(bool v3, BYTE* d, const char* s) assert(len < 256); *d++ = len; } + len = (std::min)(len, kMaxNameLen-1); memcpy(d, s, len + 1); + d[len] = '\0'; for(int i = 0; i < len; i++) if (d[i] == '.') -- cgit v0.12