llvm-project/clang/test/Lexer
Volodymyr Sapsai 579f0b307c [Lex] Fix handling numerical literals ending with ' and signed exponent.
For input `0'e+1` lexer tokenized as numeric constant only `0'e`. Later
NumericLiteralParser skipped 0 and ' as digits and parsed `e+1` as valid
exponent going past the end of the token. Because it didn't mark numeric
literal as having an error, it continued parsing and tried to expandUCNs
with StringRef of length -2.

The fix is not to parse exponent when we reached the end of token.

Discovered by OSS-Fuzz:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4588

rdar://problem/36076719

Reviewers: rsmith, t.p.northover

Reviewed By: rsmith

Subscribers: cfe-commits, jkorous-apple

Differential Revision: https://reviews.llvm.org/D41834

llvm-svn: 324419
2018-02-06 22:39:25 +00:00
..
Inputs Use the name of the file on disk to issue a new diagnostic about non-portable #include and #import paths. 2016-06-13 20:40:21 +00:00
11-27-2007-FloatLiterals.c
asm-preproc-no-unicode.s Skip Unicode character expansion in assembly files 2017-04-07 10:13:00 +00:00
badstring_in_if0.c
bcpl-escaped-newline.c Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
block_cmt_end.c Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
builtin_redef.c
c90.c
case-insensitive-include-ms.c [clang] Get rid of "%T" expansions 2017-08-15 19:47:06 +00:00
case-insensitive-include-pr31836.sh [clang] Get rid of "%T" expansions 2017-08-15 19:47:06 +00:00
case-insensitive-include.c [clang] Get rid of "%T" expansions 2017-08-15 19:47:06 +00:00
case-insensitive-system-include.c [clang] Get rid of "%T" expansions 2017-08-15 19:47:06 +00:00
char-escapes.c
char-literal-encoding-error.c
char-literal.cpp
comment-escape.c
conflict-marker.c Lex: Don't crash if both conflict markers are on the same line 2014-12-14 04:53:11 +00:00
constants.c Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
coroutines.cpp [coroutines] Rename driver flag -fcoroutines to -fcoroutines-ts 2016-10-02 03:31:58 +00:00
counter.c
cross-windows-on-linux-default.cpp
cross-windows-on-linux.cpp
cxx-features.cpp Switch to gnu++14 as the default dialect. 2017-12-09 12:09:54 +00:00
cxx0x_keyword_as_cxx98.cpp [Tests] Add explicit -std=lang option to a number of tests. 2015-08-01 02:55:59 +00:00
cxx0x_raw_string_delim_length.cpp
cxx0x_raw_string_directives.cpp
cxx0x_raw_string_unterminated.cpp
cxx1y_binary_literal.cpp
cxx1y_digit_separators.cpp [Lex] Fix handling numerical literals ending with ' and signed exponent. 2018-02-06 22:39:25 +00:00
cxx1z-trigraphs.cpp Do not warn about whitespace between ??/ trigraph and newline in line comments if trigraphs are disabled in the current language. 2017-04-18 21:45:04 +00:00
cxx2a-spaceship.cpp [c++2a] P0515R3: Support for overloaded operator<=>. 2017-12-01 02:13:10 +00:00
cxx2a_keyword_as_cxx17.cpp Add missing test for warning added in r310803. 2017-08-16 00:06:07 +00:00
digraph.c
dollar-idents.c
eof-char.c
eof-conflict-marker.c [Lexer] Don't read out of bounds if a conflict marker is at the end of a file 2016-04-01 09:58:45 +00:00
eof-file.c
eof-include.c Fix buffer overflow in Lexer 2015-05-04 22:30:29 +00:00
eof-number.c [lex] Don't read past the end of the buffer 2015-03-29 14:11:37 +00:00
eof-string.c
escape_newline.c Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
gnu-flags.c
half-literal.cpp Switch to gnu++14 as the default dialect. 2017-12-09 12:09:54 +00:00
has_attribute_objc_boxable.m Add missing files for objc_boxable feature. 2015-07-23 14:45:41 +00:00
has_extension.c Add support for has_feature(cxx_alignof) and has_feature(c_alignof). 2014-12-03 01:25:49 +00:00
has_extension_cxx.cpp Have '__have_extension(cxx_variadic_templates)' return true for any C++ standard. 2015-05-12 22:37:23 +00:00
has_feature_address_sanitizer.cpp Hardware-assisted AddressSanitizer (clang part). 2017-12-09 01:32:07 +00:00
has_feature_boxed_nsvalue_expressions.m Add missing files for objc_boxable feature. 2015-07-23 14:45:41 +00:00
has_feature_c1x.c Add support for has_feature(cxx_alignof) and has_feature(c_alignof). 2014-12-03 01:25:49 +00:00
has_feature_cxx0x.cpp P0426: Make the library implementation of constexpr char_traits a little easier 2017-01-20 00:45:35 +00:00
has_feature_efficiency_sanitizer.cpp [esan|wset] Add working set tool driver flags 2016-05-25 00:41:24 +00:00
has_feature_exceptions.cpp
has_feature_memory_sanitizer.cpp
has_feature_modules.m
has_feature_objc_arc.m
has_feature_rtti.cpp Turn off __has_feature(cxx_rtti) when -fno-rtti-data is present 2015-08-13 17:56:49 +00:00
has_feature_thread_sanitizer.cpp
has_feature_type_traits.cpp Revert "[Lex] Support more type-traits in __has_feature" 2016-05-24 17:21:42 +00:00
header.cpp
hexfloat.cpp Replace remaining user-visible mentions of C++1z with C++17. 2017-08-13 22:26:53 +00:00
keywords_test.c Add -f[no-]declspec to control recognition of __declspec as a keyword 2015-10-04 17:51:05 +00:00
keywords_test.cpp [c++2a] Treat 'concept' and 'requires' as keywords, add compat warning for C++17 and before. 2017-08-13 21:32:33 +00:00
long-long.cpp
modules-ts.cpp Add -fmodules-ts flag to cc1 for the provisional C++ modules TS, and mark 2016-07-23 02:32:21 +00:00
ms-compatibility.c MSVC: A wide string literal from L#macro_arg in a macro 2014-12-15 04:18:11 +00:00
ms-extensions.c [MS Extensions] Remove support for the i128 integer literal suffix 2015-07-26 09:02:26 +00:00
ms-extensions.cpp [Tests] Add explicit -std=lang option to a number of tests. 2015-08-01 02:55:59 +00:00
msdos-cpm-eof.c Fix test from r256596 2015-12-29 23:23:38 +00:00
multiple-include.c
newline-eof-c++98-compat.cpp
newline-eof.c
newline-nul.c Fix mishandling of escaped newlines followed by newlines or nuls. 2017-04-17 23:44:51 +00:00
null-character-in-literal.c [Lex] Avoid out-of-bounds dereference in LexAngledStringLiteral. 2018-01-12 18:54:35 +00:00
numeric-literal-trash.c
objc_macros.m In Objective-C, ignore attempts to redefine the ARC/GC qualifier macros. 2015-12-10 23:31:01 +00:00
opencl-half-literal.cl [OpenCL] Add supported OpenCL extensions to target info. 2016-05-16 17:06:34 +00:00
pragma-mark.c
pragma-message.c
pragma-message2.c
pragma-operators.cpp Add -fuse-line-directive flag to control usage of #line with -E 2015-02-26 00:17:25 +00:00
pragma-region.c
preamble.c Allow for unfinished #if blocks in preambles 2017-05-30 11:54:55 +00:00
preamble2.c Allow for unfinished #if blocks in preambles 2017-05-30 11:54:55 +00:00
rdar-8914293.c
rdr-6096838-2.c
rdr-6096838.c
string-literal-encoding.c
string-literal-errors.cpp
string_concat.cpp
token-concat.c
token-concat.cpp
unicode-strings.c
unicode.c Warn if we find a Unicode homoglyph for a symbol in an identifier. 2017-12-14 13:15:08 +00:00
unknown-char.c
utf-16.c
utf-16.c.txt
utf8-char-literal.cpp
utf8-invalid.c
warn-date-time.c
warn_binary_literals.cpp Split off the binary literal warning into a subgroup of C++14 warnings 2015-09-18 23:18:39 +00:00
wchar-signedness.c
wchar.c Driver: hoist the `wchar_t` handling to the driver 2017-10-06 23:09:55 +00:00