diff --git a/docs/CODE_QUALITY.md b/docs/CODE_QUALITY.md index 9057dbd2834..7d54a0f2e28 100644 --- a/docs/CODE_QUALITY.md +++ b/docs/CODE_QUALITY.md @@ -56,9 +56,12 @@ available functionality: in regular intervals. The reports are available [online](https://scan.coverity.com/projects/systemd). -11. [oss-fuzz](https://oss-fuzz.com/) is continuously fuzzing the +11. [OSS-Fuzz](https://github.com/google/oss-fuzz) is continuously fuzzing the codebase. Reports are available - [online](https://oss-fuzz.com/v2/testcases?project=systemd). + [online](https://oss-fuzz.com/testcases?project=systemd&open=yes). + It also builds + [coverage reports](https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_systemd/latest) + daily. 12. Our tree includes `.editorconfig`, `.dir-locals.el` and `.vimrc` files, to ensure that editors follow the right indentiation styles automatically. diff --git a/docs/HACKING.md b/docs/HACKING.md index 9d938769ab2..0151b9c4f48 100644 --- a/docs/HACKING.md +++ b/docs/HACKING.md @@ -153,14 +153,28 @@ corpus should be built and exported as `$OUT/fuzz-foo_seed_corpus.zip` in `tools/oss-fuzz.sh`. The fuzzers can be built locally if you have libFuzzer installed by running -`tools/oss-fuzz.sh`. You should also confirm that the fuzzer runs in the -OSS-Fuzz environment by checking out the OSS-Fuzz repo, and then running -commands like this: +`tools/oss-fuzz.sh`. You should also confirm that the fuzzers can be built and +run using +[the OSS-Fuzz toolchain](https://google.github.io/oss-fuzz/advanced-topics/reproducing/#building-using-docker): ``` -python infra/helper.py build_image systemd -python infra/helper.py build_fuzzers --sanitizer memory systemd ../systemd -python infra/helper.py run_fuzzer systemd fuzz-foo +path_to_systemd=... + +git clone --depth=1 https://github.com/google/oss-fuzz +cd oss-fuzz + +for sanitizer in address undefined memory; do + for engine in libfuzzer afl honggfuzz; do + ./infra/helper.py build_fuzzers --sanitizer "$sanitizer" --engine "$engine" \ + --clean systemd "$path_to_systemd" + + ./infra/helper.py check_build --sanitizer "$sanitizer" --engine "$engine" \ + -e ALLOWED_BROKEN_TARGETS_PERCENTAGE=0 systemd + done +done + +./infra/helper.py build_fuzzers --clean --sanitizer coverage systemd "$path_to_systemd" +./infra/helper.py coverage --no-corpus-download systemd ``` If you find a bug that impacts the security of systemd, please follow the