diff options
author | Kostya Serebryany <kcc@google.com> | 2015-05-04 22:30:29 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2015-05-04 22:30:29 +0000 |
commit | 6c2479bee4cb3dad62e11b8cf774f95204bb518d (patch) | |
tree | 77a268bd7789a1165388cbc05eb169161ed67f59 /clang/lib/Lex | |
parent | a68970dfd58dab5443707efc13ed682d6fbd076c (diff) | |
download | bcm5719-llvm-6c2479bee4cb3dad62e11b8cf774f95204bb518d.tar.gz bcm5719-llvm-6c2479bee4cb3dad62e11b8cf774f95204bb518d.zip |
Fix buffer overflow in Lexer
Summary:
Fix PR22407, where the Lexer overflows the buffer when parsing
#include<\
(end of file after slash)
Test Plan:
Added a test that will trigger in asan build.
This case is also covered by the clang-fuzzer bot.
Reviewers: rnk
Reviewed By: rnk
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D9489
llvm-svn: 236466
Diffstat (limited to 'clang/lib/Lex')
-rw-r--r-- | clang/lib/Lex/Lexer.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp index a3b520b2632..3f89ea649cb 100644 --- a/clang/lib/Lex/Lexer.cpp +++ b/clang/lib/Lex/Lexer.cpp @@ -1854,7 +1854,7 @@ bool Lexer::LexAngledStringLiteral(Token &Result, const char *CurPtr) { char C = getAndAdvanceChar(CurPtr, Result); while (C != '>') { // Skip escaped characters. - if (C == '\\') { + if (C == '\\' && CurPtr < BufferEnd) { // Skip the escaped character. getAndAdvanceChar(CurPtr, Result); } else if (C == '\n' || C == '\r' || // Newline. |