summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/PPMacroExpansion.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2015-03-29 15:33:29 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2015-03-29 15:33:29 +0000
commit18ff02dd5139d153b027564a5e43c554b08dcc39 (patch)
treeb25f057b6bba2291288bc21ef8f71b054286db33 /clang/lib/Lex/PPMacroExpansion.cpp
parent3012e59bc7a7224f59a8356feed54ac57b0bedb4 (diff)
downloadbcm5719-llvm-18ff02dd5139d153b027564a5e43c554b08dcc39.tar.gz
bcm5719-llvm-18ff02dd5139d153b027564a5e43c554b08dcc39.zip
[lex] Don't create a garbage token if parsing of __has_include fails.
It will crash downstream somewhere. Found by afl-fuzz. llvm-svn: 233493
Diffstat (limited to 'clang/lib/Lex/PPMacroExpansion.cpp')
-rw-r--r--clang/lib/Lex/PPMacroExpansion.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp
index 77631815494..f2baddd0b83 100644
--- a/clang/lib/Lex/PPMacroExpansion.cpp
+++ b/clang/lib/Lex/PPMacroExpansion.cpp
@@ -1461,9 +1461,11 @@ void Preprocessor::ExpandBuiltinMacro(Token &Tok) {
Value = EvaluateHasInclude(Tok, II, *this);
else
Value = EvaluateHasIncludeNext(Tok, II, *this);
+
+ if (Tok.isNot(tok::r_paren))
+ return;
OS << (int)Value;
- if (Tok.is(tok::r_paren))
- Tok.setKind(tok::numeric_constant);
+ Tok.setKind(tok::numeric_constant);
} else if (II == Ident__has_warning) {
// The argument should be a parenthesized string literal.
// The argument to these builtins should be a parenthesized identifier.
OpenPOWER on IntegriCloud