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) { if (has_sign) {
// Check for +/-inf which is considered a float constant. // Check for +/-inf which is considered a float constant.
if (strncmp(cursor_, "inf", 3) == 0 && 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); attribute_.assign(cursor_ - 1, cursor_ + 3);
token_ = kTokenFloatConstant; token_ = kTokenFloatConstant;
cursor_ += 3; 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. To build and run these tests LLVM compiler (with clang frontend) and CMake should be installed before.
The fuzzer section include four tests: 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; - `verifier_fuzzer` checks stability of deserialization engine for `Monster` schema;
- `parser_fuzzer` checks stability of schema and json parser under various inputs; - `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; - `scalar_parser` focused on validation of the parser while parse numeric scalars in schema and/or json files;