On Mon, Aug 13, 2012 at 1:32 PM, Chad Rosier <[email protected]> wrote:
> + case tok::numeric_constant: {
> + SmallString<32> TokenBuf;
> + TokenBuf.resize(32);
> + bool StringInvalid = false;
> + const char *ThisTokBuf = &TokenBuf[0];
> + unsigned ThisTokLen =
> + Lexer::getSpelling(AsmToks[j], ThisTokBuf,
> SemaRef.getSourceManager(),
> + SemaRef.getLangOpts(), &StringInvalid);
> + Asm += StringRef(ThisTokBuf, ThisTokLen);
> break;
> }
This sounds like a buffer overflow... It would be better to use
another Lexer::getSpelling() overload that returns StringRef. Or you
could use Preprocessor::getSpelling().
Dmitri
--
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <[email protected]>*/
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits