summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaStmt.cpp
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-08-14 21:48:01 +0000
committerChad Rosier <mcrosier@apple.com>2012-08-14 21:48:01 +0000
commitbba12afe48d699cb54d5a1522738f7fd6cb6381a (patch)
treeec4b4ba5c030899623d258053bf043ffc9f12737 /clang/lib/Sema/SemaStmt.cpp
parent34107b91779520fa4242e027011b24f377bb7f8c (diff)
downloadbcm5719-llvm-bba12afe48d699cb54d5a1522738f7fd6cb6381a.tar.gz
bcm5719-llvm-bba12afe48d699cb54d5a1522738f7fd6cb6381a.zip
[ms-inline asm] Address a potential buffer overflow.
llvm-svn: 161896
Diffstat (limited to 'clang/lib/Sema/SemaStmt.cpp')
-rw-r--r--clang/lib/Sema/SemaStmt.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index 89f68e3237d..febcdc94413 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -2870,15 +2870,12 @@ static std::string buildMSAsmString(Sema &SemaRef,
TokenBuf.resize(512);
unsigned AsmLineNum = 0;
for (unsigned i = 0, e = AsmToks.size(); i < e; ++i) {
- const char *ThisTokBuf = &TokenBuf[0];
bool StringInvalid = false;
- unsigned ThisTokLen =
- Lexer::getSpelling(AsmToks[i], ThisTokBuf, SemaRef.getSourceManager(),
- SemaRef.getLangOpts(), &StringInvalid);
if (i && (!AsmLineNum || i != LineEnds[AsmLineNum-1]) &&
needSpaceAsmToken(AsmToks[i]))
Asm += ' ';
- Asm += StringRef(ThisTokBuf, ThisTokLen);
+ Asm += SemaRef.PP.getSpelling(AsmToks[i], TokenBuf, &StringInvalid);
+ assert (!StringInvalid && "Expected valid string!");
if (i + 1 == LineEnds[AsmLineNum] && i + 1 != AsmToks.size()) {
Asm += '\n';
++AsmLineNum;
OpenPOWER on IntegriCloud