Skip to content
Fuzzy testing of various EIP1962 implementations
Rust Shell Dockerfile
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
afl
afl_go
cross_tester
cross_tester_go
honggfuzz
honggfuzz_go
honggfuzz_macos
libfuzzer
libfuzzer_go
.gitignore
README.md

README.md

Fuzzers for EIP1962

This repo contains preset scripts for fuzzing of Rust implementation, fuzzing gas estimator (those are not too interesting), and differential testing between C++ implementation and Rust implementation. All scripts are Rust files, so C++ is wrapper into the thin layer.

Implementations

Libfuzzer

Requires:

  • C++17 compiler
  • Nightly Rust
  • Install using manual

Usage:

  • cd fuzz
  • bash run_fuzz_compare.sh

Honggfuzz

Requires:

  • C++17 compiler
  • Stable Rust
  • Install using manual

Usage:

  • cd honggfuzz
  • bash run_honggfuzz_compare.sh

Tuning

  • Change number of threads for fuzzers in scripts
  • Download initial corpus from here and follow the instructions of either here or here

Recommendations and updates

  • Honggfuzz is recommended for speed
  • Now Honggfuzz saves all results instead of unique ones. Due to differential testing being implemented as "panic on different results" fuzzer considered different reasons as one crash case.
  • run cargo update before running to fetch latest copies from github

Extra

Folder cross-tester contains few examples how to specify inputs from fuzzer reports debug and compare implementations.

You can’t perform that action at this time.