diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-08-14 21:48:01 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-08-14 21:48:01 +0000 |
commit | bba12afe48d699cb54d5a1522738f7fd6cb6381a (patch) | |
tree | ec4b4ba5c030899623d258053bf043ffc9f12737 /clang/lib/Sema/SemaStmt.cpp | |
parent | 34107b91779520fa4242e027011b24f377bb7f8c (diff) | |
download | bcm5719-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.cpp | 7 |
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; |