Name | Size | Modified | Last Commit | Author |
---|---|---|---|---|
/ contrib / fuzz | ||||
FuzzedDataProvider.h | Loading ... | |||
Makefile | Loading ... | |||
README.rst | Loading ... | |||
bdiff.cc | Loading ... | |||
dirs.cc | Loading ... | |||
dirs_corpus.py | Loading ... | |||
dirstate.cc | Loading ... | |||
dirstate_corpus.py | Loading ... | |||
fm1readmarkers.cc | Loading ... | |||
fm1readmarkers_corpus.py | Loading ... | |||
fncache.cc | Loading ... | |||
fuzzutil.h | Loading ... | |||
jsonescapeu8fast.cc | Loading ... | |||
manifest.cc | Loading ... | |||
manifest_corpus.py | Loading ... | |||
mpatch.cc | Loading ... | |||
mpatch_corpus.py | Loading ... | |||
pyutil.cc | Loading ... | |||
pyutil.h | Loading ... | |||
revlog.cc | Loading ... | |||
revlog_corpus.py | Loading ... | |||
standalone_fuzz_target_runner.cc | Loading ... | |||
xdiff.cc | Loading ... |
How to add fuzzers (partially cribbed from oss-fuzz[0]):
- git clone https://github.com/google/oss-fuzz
- cd oss-fuzz
- python infra/helper.py build_image mercurial
- docker run --cap-add=SYS_PTRACE -it -v $HG_REPO_PATH:/hg-new
- gcr.io/oss-fuzz/mercurial bash
- cd /src
- rm -r mercurial
- ln -s /hg-new mercurial
- cd mercurial
- compile
- ls $OUT
Step 9 is literally running the command "compile", which is part of the docker container. Once you have that working, you can build the fuzzers like this (in the oss-fuzz repo):
python infra/helper.py build_fuzzers --sanitizer address mercurial $HG_REPO_PATH
(you can also say "memory", "undefined" or "coverage" for sanitizer). Then run the built fuzzers like this:
python infra/helper.py run_fuzzer mercurial -- $FUZZER
0: https://github.com/google/oss-fuzz/blob/master/docs/new_project_guide.md