nim-graphql/fuzzer
jangko 6d30ad6476
add fuzzer for lexer and parser
2021-03-29 19:26:11 +07:00
..
fuzz_lexer.nim add fuzzer for lexer and parser 2021-03-29 19:26:11 +07:00
fuzz_parser.nim add fuzzer for lexer and parser 2021-03-29 19:26:11 +07:00
fuzz_parser_query.nim add fuzzer for lexer and parser 2021-03-29 19:26:11 +07:00
fuzz_parser_schema.nim add fuzzer for lexer and parser 2021-03-29 19:26:11 +07:00
readme.md add fuzzer for lexer and parser 2021-03-29 19:26:11 +07:00

readme.md

Fuzz test manual

You need to install testutils and read documentation over there to prepare your execution environment.

Compatibility

These fuzzers can be compiled with Nim v1.4.4 or newer but failed with v1.2.x

Available fuzz test

  • fuzz_lexer
  • fuzz_parser
  • fuzz_parser_schema
  • fuzz_parser_query
  • fuzz_validator

Manually with libFuzzer/llvmFuzer

Compiling

nim c -d:llvmFuzzer -d:release -d:chronicles_log_level=FATAL --noMain --cc=clang --passC="-fsanitize=fuzzer" --passL="-fsanitize=fuzzer" fuzz_lexer

Starting the Fuzzer

Starting the fuzzer is as simple as running the compiled program:

./fuzz_lexer corpus_dir -runs=1000000

To see the available options:

./fuzz_lexer test=1

You can also use the application to verify a specific test case:

./fuzz_lexer input_file