summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Schuetze <r.sagitario@gmx.de>2016-03-15 07:30:43 (GMT)
committerRainer Schuetze <r.sagitario@gmx.de>2016-03-15 07:30:43 (GMT)
commitc3bdd90f5f999fde082ee42eec115322f7e6974d (patch)
tree7d71f692abdf6dbafbe3d6451b295b66af3cec6f
parent5c63d48b6d21ba2d90e5eefce6638400da8a9324 (diff)
parentdf56a46b7c9848f717280f37f12f9b4051edbbee (diff)
downloadcv2pdb-c3bdd90f5f999fde082ee42eec115322f7e6974d.zip
cv2pdb-c3bdd90f5f999fde082ee42eec115322f7e6974d.tar.gz
cv2pdb-c3bdd90f5f999fde082ee42eec115322f7e6974d.tar.bz2
Merge pull request #13 from marc-groundctl/master
Truncate symbols that are too long
-rw-r--r--src/cv2pdb.cpp2
-rw-r--r--src/symutil.cpp4
2 files changed, 5 insertions, 1 deletions
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 <algorithm>
+
#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] == '.')