diff options
author | Erik Pilkington <erik.pilkington@gmail.com> | 2017-05-28 23:24:52 +0000 |
---|---|---|
committer | Erik Pilkington <erik.pilkington@gmail.com> | 2017-05-28 23:24:52 +0000 |
commit | de83eea5769c218a90751409b310f42c261e61c0 (patch) | |
tree | feb4ef696dfe5791c02af116bd7e91761cb2506f /llvm/lib/Demangle/ItaniumDemangle.cpp | |
parent | a34ea7583fb292454ba3808b62a06da07c609fdb (diff) | |
download | llvm-de83eea5769c218a90751409b310f42c261e61c0.zip llvm-de83eea5769c218a90751409b310f42c261e61c0.tar.gz llvm-de83eea5769c218a90751409b310f42c261e61c0.tar.bz2 |
[ItaniumDemangle] Fix a exponential string copying bug
This is a port of libcxxabi's r304113.
llvm-svn: 304114
Diffstat (limited to 'llvm/lib/Demangle/ItaniumDemangle.cpp')
-rw-r--r-- | llvm/lib/Demangle/ItaniumDemangle.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Demangle/ItaniumDemangle.cpp b/llvm/lib/Demangle/ItaniumDemangle.cpp index 03d11a7..34f4017 100644 --- a/llvm/lib/Demangle/ItaniumDemangle.cpp +++ b/llvm/lib/Demangle/ItaniumDemangle.cpp @@ -2525,6 +2525,9 @@ static std::string base_name(std::string &s) { ++p0; break; } + if (!isalpha(*p0) && !isdigit(*p0) && *p0 != '_') { + return std::string(); + } } return std::string(p0, pe); } |