summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-10-11 00:41:20 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-10-11 00:41:20 +0000
commitc1e32fca96743194a28519bb90add1137d96f65c (patch)
tree796eaf2bba9c9556baf387541b4bd98b012e53f3 /clang/lib/Lex
parent18057cb34c83a11889e0cced9ab43aa57875634f (diff)
downloadbcm5719-llvm-c1e32fca96743194a28519bb90add1137d96f65c.tar.gz
bcm5719-llvm-c1e32fca96743194a28519bb90add1137d96f65c.zip
A '<' with a trigraph '#' is not a valid editor placeholder
Credit to OSS-Fuzz for discovery: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3137#c5 rdar://34923985 llvm-svn: 315398
Diffstat (limited to 'clang/lib/Lex')
-rw-r--r--clang/lib/Lex/Lexer.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp
index 9885ab9d3e2..0c179c0fb87 100644
--- a/clang/lib/Lex/Lexer.cpp
+++ b/clang/lib/Lex/Lexer.cpp
@@ -3542,7 +3542,8 @@ LexNextToken:
} else if (LangOpts.Digraphs && Char == '%') { // '<%' -> '{'
CurPtr = ConsumeChar(CurPtr, SizeTmp, Result);
Kind = tok::l_brace;
- } else if (Char == '#' && lexEditorPlaceholder(Result, CurPtr)) {
+ } else if (Char == '#' && /*Not a trigraph*/ SizeTmp == 1 &&
+ lexEditorPlaceholder(Result, CurPtr)) {
return true;
} else {
Kind = tok::less;
OpenPOWER on IntegriCloud