fixed off-by-one in parser

This commit is contained in:
Derek Bailey
2022-04-21 21:22:20 -07:00
parent 746c73b910
commit 234d86c92a
2 changed files with 2 additions and 1 deletions

View File

@@ -492,7 +492,7 @@ CheckedError Parser::Next() {
if (has_sign) {
// Check for +/-inf which is considered a float constant.
if (strncmp(cursor_, "inf", 3) == 0 &&
!(IsIdentifierStart(cursor_[4]) || is_digit(cursor_[4]))) {
!(IsIdentifierStart(cursor_[3]) || is_digit(cursor_[3]))) {
attribute_.assign(cursor_ - 1, cursor_ + 3);
token_ = kTokenFloatConstant;
cursor_ += 3;

View File

@@ -11,6 +11,7 @@ For details about **libFuzzer** see: https://llvm.org/docs/LibFuzzer.html
To build and run these tests LLVM compiler (with clang frontend) and CMake should be installed before.
The fuzzer section include four tests:
- `annotator_fuzzer` checks that inputs given to the flatc --annotate are always parsable;
- `verifier_fuzzer` checks stability of deserialization engine for `Monster` schema;
- `parser_fuzzer` checks stability of schema and json parser under various inputs;
- `scalar_parser` focused on validation of the parser while parse numeric scalars in schema and/or json files;