├── .allstar
└── binary_artifacts.yaml
├── .dockerignore
├── .gcloudignore
├── .github
└── workflows
│ ├── benchmarks.yml
│ ├── build_and_test_run_fuzzer_benchmarks.py
│ └── presubmit.yml
├── .gitignore
├── .gitmodules
├── .pylintrc
├── .style.yapf
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── README.md
├── alembic.ini
├── analysis
├── README.md
├── benchmark_results.py
├── coverage_data_utils.py
├── data_utils.py
├── experiment_results.py
├── generate_report.py
├── notebooks
│ ├── README.md
│ ├── example.ipynb
│ └── ranking.ipynb
├── plotting.py
├── queries.py
├── rendering.py
├── report_templates
│ ├── default.html
│ └── experimental.html
├── stat_tests.py
├── test_coverage_data_utils.py
├── test_data
│ ├── bug_experiment_1_df.csv
│ ├── bug_experiment_2_df.csv
│ ├── expected_1.csv
│ ├── expected_2.csv
│ ├── pairwise_unique_coverage_heatmap.png
│ └── unique_coverage_ranking.png
├── test_data_utils.py
├── test_experiment_results.py
├── test_plotting.py
├── test_queries.py
└── test_stat_tests.py
├── benchmarks
├── bloaty_fuzz_target
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── bloaty_fuzz_target_52948c
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── curl_curl_fuzzer_http
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── freetype2_ftfuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── harfbuzz_hb-shape-fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── harfbuzz_hb-shape-fuzzer_17863b
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── jsoncpp_jsoncpp_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── lcms_cms_transform_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ ├── cms_transform_fuzzer.cc
│ └── seeds
│ │ └── seed
├── libjpeg-turbo_libjpeg_turbo_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ ├── libjpeg_turbo_fuzzer.cc
│ └── seeds
│ │ └── seed.jpg
├── libpcap_fuzz_both
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── libpng_libpng_read_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── seeds
│ │ └── seed.png
├── libxml2_xml
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ └── target.cc
├── libxml2_xml_e85b9b
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ └── target.cc
├── libxslt_xpath
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── mbedtls_fuzz_dtlsclient
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── mbedtls_fuzz_dtlsclient_7c6b0e
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── mruby_mruby_fuzzer_8c8bbd
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ ├── mruby.dict
│ └── mruby_fuzzer.c
├── openh264_decoder_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ ├── decoder_fuzzer.cpp
│ └── testcases
│ │ ├── 18438
│ │ ├── 18458
│ │ ├── 18459
│ │ ├── 18460
│ │ ├── 18480
│ │ ├── 18486
│ │ ├── 18520
│ │ ├── 18521
│ │ ├── 18522
│ │ ├── 18533
│ │ ├── 18644
│ │ └── 18743
├── openssl_x509
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── openthread_ot-ip6-send-fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── build.sh
├── oss_fuzz_benchmark_integration.py
├── php_php-fuzz-parser_0dbedb
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ ├── cosmic.list
│ └── testcases
│ │ ├── 24387
│ │ ├── 24401
│ │ ├── 24403
│ │ ├── 24405
│ │ ├── 24423
│ │ ├── 24436
│ │ ├── 24567
│ │ └── 24627
├── proj4_proj_crs_to_crs_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ └── third_party
│ │ └── build.sh
├── re2_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ └── target.cc
├── sqlite3_ossfuzz
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ └── ossfuzz.dict
├── stb_stbi_read_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ └── testcases
│ │ ├── 22580
│ │ ├── 22584
│ │ ├── 22587
│ │ ├── 22596
│ │ ├── 22605
│ │ ├── 22620
│ │ ├── 22640
│ │ ├── 22648
│ │ ├── 22651
│ │ ├── 23153
│ │ └── 24185
├── systemd_fuzz-link-parser
│ ├── Dockerfile
│ └── benchmark.yaml
├── vorbis_decode_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ └── seeds
│ │ └── sound.ogg
├── woff2_convert_woff2ttf_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ └── target.cc
└── zlib_zlib_uncompress_fuzzer
│ ├── Dockerfile
│ ├── benchmark.yaml
│ ├── build.sh
│ └── zlib_uncompress_fuzzer.cc
├── common
├── benchmark_config.py
├── benchmark_utils.py
├── config_utils.py
├── conftest.py
├── environment.py
├── experiment_path.py
├── experiment_utils.py
├── filestore_utils.py
├── filesystem.py
├── fuzzer_config.py
├── fuzzer_stats.py
├── fuzzer_utils.py
├── gce.py
├── gcloud.py
├── gsutil.py
├── local_filestore.py
├── logs.py
├── new_process.py
├── queue_utils.py
├── random_corpus_fuzzing_utils.py
├── retry.py
├── sanitizer.py
├── test_benchmark_config.py
├── test_benchmark_utils.py
├── test_common_utils.py
├── test_data
│ └── printer.py
├── test_experiment_utils.py
├── test_filestore_utils.py
├── test_filesystem.py
├── test_fuzzer_stats.py
├── test_fuzzer_utils.py
├── test_gce.py
├── test_gcloud.py
├── test_gsutil.py
├── test_local_filestore.py
├── test_new_process.py
├── utils.py
└── yaml_utils.py
├── compose
├── e2e-test.yaml
└── fuzzbench.yaml
├── conftest.py
├── database
├── alembic
│ ├── README
│ ├── env.py
│ ├── script.py.mako
│ └── versions
│ │ ├── 26dcc0e12872_add_experiment_description.py
│ │ ├── 43dc3aacd80e_git_hash.py
│ │ ├── 541d041d662a_support_private.py
│ │ ├── 5c5f07c6f2fa_initial.py
│ │ ├── 72f7db0e7dfe_support_preemptibles.py
│ │ ├── 77022369cea4_time_ended.py
│ │ ├── 8c237d2acbc4_add_crash_table.py
│ │ ├── a7089f396110_scheduler.py
│ │ ├── c83ac04855b4_add_filestore_name.py
│ │ └── eec6e5667b87_add_fuzzer_stats.py
├── models.py
└── utils.py
├── docker
├── base-image
│ └── Dockerfile
├── benchmark-builder
│ ├── Dockerfile
│ ├── checkout_commit.py
│ └── fuzzer_build
├── benchmark-runner
│ ├── Dockerfile
│ └── startup-runner.sh
├── dispatcher-image
│ ├── Dockerfile
│ └── startup-dispatcher.sh
├── fuzzbench
│ └── Dockerfile
├── gcb
│ └── base-images.yaml
├── generate_makefile.py
├── image_types.yaml
├── test_generate_makefile.py
└── worker
│ ├── Dockerfile
│ └── startup-worker.sh
├── docs
├── 404.html
├── Gemfile
├── Gemfile.lock
├── README.md
├── _config.yml
├── _data
│ └── fuzzers.yaml
├── _includes
│ └── head_custom.html
├── developing-fuzzbench
│ ├── adding_a_new_benchmark.md
│ ├── custom_analysis_and_reports.md
│ └── developing_fuzzbench.md
├── faq.md
├── getting-started
│ ├── adding_a_new_fuzzer.md
│ ├── contributing_code.md
│ ├── getting_started.md
│ └── prerequisites.md
├── images
│ ├── FuzzBench-architecture.png
│ └── FuzzBench-service.png
├── index.md
├── internal-documentation
│ └── internal_documentation.md
├── publications.md
├── reference
│ ├── benchmarks.md
│ ├── benchmarks.py
│ ├── experiment_data.md
│ ├── fuzzer_row.html
│ ├── fuzzers.md
│ ├── glossary.md
│ ├── how_it_works.md
│ ├── reference.md
│ ├── report.md
│ └── useful_links.md
├── running-a-cloud-experiment
│ ├── running_a_cloud_experiment.md
│ ├── running_an_experiment.md
│ └── setting_up_a_google_cloud_project.md
└── running-a-local-experiment
│ └── running_a_local_experiment.md
├── experiment
├── build
│ ├── build_utils.py
│ ├── builder.py
│ ├── docker_images.py
│ ├── gcb_build.py
│ ├── generate_cloudbuild.py
│ ├── local_build.py
│ ├── test_builder.py
│ ├── test_docker_images.py
│ ├── test_gcb_build.py
│ └── test_generate_cloudbuild.py
├── cloud
│ ├── secret_manager.py
│ └── service_account_key.py
├── conftest.py
├── dispatcher.py
├── measurer
│ ├── coverage_utils.py
│ ├── datatypes.py
│ ├── measure_manager.py
│ ├── measure_worker.py
│ ├── run_coverage.py
│ ├── run_crashes.py
│ ├── standalone.py
│ ├── test_coverage_utils.py
│ ├── test_data
│ │ ├── afl-corpus.tgz
│ │ ├── cov_summary.json
│ │ ├── cov_summary_defective.json
│ │ ├── covered-pcs.txt
│ │ ├── libfuzzer-corpus.tgz
│ │ ├── llvm_tools
│ │ │ ├── llvm-cov
│ │ │ ├── llvm-profdata
│ │ │ └── llvm-symbolizer
│ │ ├── test_measure_snapshot_coverage
│ │ │ ├── corpus-archive-0001.tar.gz
│ │ │ └── freetype2_ftfuzzer-coverage
│ │ ├── test_run_coverage
│ │ │ ├── corpus
│ │ │ │ └── 0
│ │ │ ├── crash-corpus
│ │ │ │ ├── 0
│ │ │ │ ├── crash1
│ │ │ │ └── crash2
│ │ │ ├── fuzz-target
│ │ │ ├── fuzz-target-clang-cov
│ │ │ ├── fuzz_target.cc
│ │ │ ├── third_party
│ │ │ │ └── StandaloneFuzzTargetMain.c
│ │ │ └── timeout-corpus
│ │ │ │ └── timeout
│ │ └── test_run_crashes
│ │ │ ├── crash-corpus
│ │ │ ├── 0
│ │ │ └── crash
│ │ │ ├── fuzz-target
│ │ │ └── fuzz_target.c
│ ├── test_measure_manager.py
│ ├── test_measure_worker.py
│ ├── test_run_coverage.py
│ └── test_run_crashes.py
├── reporter.py
├── reproduce_experiment.py
├── resources
│ ├── dispatcher-startup-script-template.sh
│ └── runner-startup-script-template.sh
├── run_experiment.py
├── runner.py
├── schedule_measure_workers.py
├── scheduler.py
├── stop_experiment.py
├── test_data
│ ├── experiment-config.yaml
│ ├── local-experiment-config.yaml
│ └── test_runner
│ │ ├── MultipleConstraintsOnSmallInputTest
│ │ └── fuzz-target_seed_corpus.zip
├── test_dispatcher.py
├── test_reporter.py
├── test_run_experiment.py
├── test_runner.py
└── test_scheduler.py
├── fuzzbench
├── jobs.py
├── local-experiment-config.yaml
├── run_experiment.py
├── test_e2e
│ ├── end-to-end-test-config.yaml
│ └── test_e2e_run.py
└── worker.py
├── fuzzers
├── afl
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── afl_2_52_b
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── afl_qemu
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── afl_random_favored
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── afl_virginmap
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflcc
│ ├── aflcc_mock.c
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflfast
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflplusplus
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflplusplus_frida
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ ├── get_frida_entry.sh
│ └── runner.Dockerfile
├── aflplusplus_qemu
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflplusplus_um_parallel
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflplusplus_um_prioritize
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflplusplus_um_prioritize_75
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflplusplus_um_random
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflplusplus_um_random_75
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflpp_random_default
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflpp_random_no_favs
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflpp_random_wrs
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflpp_random_wrs_rf
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflpp_random_wrs_rf_rp
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflpp_random_wrs_rp
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflsmart
│ ├── README.md
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── aflsmart_plusplus
│ ├── README.md
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── centipede
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── centipede_function_filter
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── coverage
│ ├── builder.Dockerfile
│ └── fuzzer.py
├── darwin
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── eclipser
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── eclipser_aflplusplus
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── eclipser_new
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── ecofuzz
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── fafuzz
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── fairfuzz
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── fuzzolic_aflplusplus_fuzzy
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── fuzzolic_aflplusplus_z3
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── glibfuzzer
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── gramatron
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ ├── fuzzer.yaml
│ └── runner.Dockerfile
├── grimoire
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ ├── fuzzer.yaml
│ └── runner.Dockerfile
├── hastefuzz
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── honggfuzz
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── honggfuzz_qemu
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── honggfuzz_um_parallel
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── honggfuzz_um_prioritize
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── honggfuzz_um_prioritize_75
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── honggfuzz_um_random
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── honggfuzz_um_random_75
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── klee
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ ├── klee_driver.cpp
│ ├── klee_mock.c
│ └── runner.Dockerfile
├── lafintel
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── learnperffuzz
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── libafl
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── libafl_libfuzzer
│ ├── builder.Dockerfile
│ ├── description.md
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── libfuzzer
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ ├── patch.diff
│ └── runner.Dockerfile
├── manul
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── mopt
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── nautilus
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ ├── fuzzer.yaml
│ └── runner.Dockerfile
├── neuzz
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── pastis
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ ├── patches
│ │ └── honggfuzz-3a8f2ae-pastis.patch
│ └── runner.Dockerfile
├── pythia_bb
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── pythia_effect_bb
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── symcc_afl
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── symcc_afl_single
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── symcc_aflplusplus
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── symcc_aflplusplus_single
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── symqemu_aflplusplus
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── symsan
│ ├── CMakeLists_bloaty.txt
│ ├── build_freetype2.sh
│ ├── build_proj.sh
│ ├── builder.Dockerfile
│ ├── bz2.abilist
│ ├── cares.abilist
│ ├── fres.sh
│ ├── fuz.sh
│ ├── fuzzer.py
│ ├── gcry.abilist
│ ├── glib.abilist
│ ├── libfuzz-harness-proxy.c
│ ├── pcre.abilist
│ ├── runner.Dockerfile
│ └── xml.abilist
├── test_fuzzers.py
├── test_utils.py
├── token_level
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ ├── fuzzer.yaml
│ └── runner.Dockerfile
├── tortoisefuzz
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── utils.py
├── weizz_qemu
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
└── wingfuzz
│ ├── builder.Dockerfile
│ ├── fuzzer.py
│ └── runner.Dockerfile
├── presubmit.py
├── pytest.ini
├── requirements.txt
├── service
├── Dockerfile
├── core-fuzzers.yaml
├── experiment-config.yaml
├── experiment-requests.yaml
├── gcbrun_experiment.py
├── gsutil_bucket_index
│ └── third_party
│ │ └── index.html
├── run.bash
├── run_experiment_cloudbuild.yaml
└── setup.bash
├── src_analysis
├── benchmark_dependencies.py
├── change_utils.py
├── diff_utils.py
├── experiment_changes.py
├── fuzzer_dependencies.py
├── test_benchmark_dependencies.py
├── test_change_utils.py
├── test_experiment_changes.py
└── test_fuzzer_dependencies.py
├── test_libs
├── test_data
│ └── afl_fuzzer_stats
└── utils.py
└── third_party
└── sancov.py
/.allstar/binary_artifacts.yaml:
--------------------------------------------------------------------------------
1 | # Exemption reason: This repo uses binary artifacts for integration tests.
2 | # Exemption timeframe: permanent/temporary
3 | optConfig:
4 | optOut: true
5 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | *.pyd
3 | *.pyo
4 | .git
5 | .pytest_cache
6 | .pytype
7 | .venv
8 | **__pycache__*
9 | docs
10 | report*
--------------------------------------------------------------------------------
/.gcloudignore:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # Ignore everything in .gitignore.
16 | #!include:.gitignore
17 |
18 | # Ignore .git folder.
19 | .git/
20 |
21 | docs/
22 |
23 | third_party/oss-fuzz/build
24 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # Ignore the configuration directory created by locally-launched experiments.
16 | config/
17 |
18 | # Byte-compiled / optimized / DLL files.
19 | __pycache__/
20 | *.py[cod]
21 | *$py.class
22 |
23 | .pytype/
24 |
25 | # Virtualenv
26 | .venv
27 |
28 | # Reports generated by FuzzBench.
29 | report/
30 |
31 | # Directories created by Jekyll.
32 | .bundle/
33 | docs/_site/
34 | docs/vendor/
35 |
36 | # Auto-generated build files.
37 | docker/generated.mk
38 |
39 | # Emacs backup files.
40 | *~
41 | \#*\#
42 |
43 | .vscode
44 |
45 | # Vim backup files.
46 | .*.swp
47 |
48 | # Diff files from matplotlib
49 | *-failed-diff.png
50 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/.gitmodules
--------------------------------------------------------------------------------
/.style.yapf:
--------------------------------------------------------------------------------
1 | [style]
2 | based_on_style = google
3 | column_limit = 80
4 | indent_width = 4
5 | split_before_named_assigns = true
6 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # How to Contribute
2 |
3 | We'd love to accept your patches and contributions to this project. There are
4 | just a few small guidelines you need to follow.
5 |
6 | ## Contributor License Agreement
7 |
8 | Contributions to this project must be accompanied by a Contributor License
9 | Agreement. You (or your employer) retain the copyright to your contribution;
10 | this simply gives us permission to use and redistribute your contributions as
11 | part of the project. Head over to to see
12 | your current agreements on file or to sign a new one.
13 |
14 | You generally only need to submit a CLA once, so if you've already submitted one
15 | (even if it was for a different project), you probably don't need to do it
16 | again.
17 |
18 | ## Code reviews
19 |
20 | All submissions, including submissions by project members, require review. We
21 | use GitHub pull requests for this purpose. Consult
22 | [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
23 | information on using pull requests.
24 |
25 | ## Community Guidelines
26 |
27 | This project follows
28 | [Google's Open Source Community Guidelines](https://opensource.google/conduct/).
29 |
--------------------------------------------------------------------------------
/analysis/notebooks/README.md:
--------------------------------------------------------------------------------
1 | # Example Google Colab / Jupyter Notebooks
2 |
3 | - [](https://colab.research.google.com/github/google/fuzzbench/blob/master/analysis/notebooks/example.ipynb) A basic example of using analysis functions whose results are not included in the default report.
4 |
5 | - [](https://colab.research.google.com/github/google/fuzzbench/blob/master/analysis/notebooks/ranking.ipynb) A simple example that compares the existing ranking methods available in the [data_utils](../data_utils.py) module.
6 |
7 |
--------------------------------------------------------------------------------
/analysis/test_data/pairwise_unique_coverage_heatmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/analysis/test_data/pairwise_unique_coverage_heatmap.png
--------------------------------------------------------------------------------
/analysis/test_data/unique_coverage_ranking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/analysis/test_data/unique_coverage_ranking.png
--------------------------------------------------------------------------------
/benchmarks/bloaty_fuzz_target/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2017 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get install -y \
21 | cmake \
22 | ninja-build \
23 | g++ \
24 | libz-dev
25 |
26 | RUN git clone \
27 | https://github.com/google/bloaty.git
28 |
29 | WORKDIR bloaty
30 | COPY build.sh $SRC/
31 |
--------------------------------------------------------------------------------
/benchmarks/bloaty_fuzz_target/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: 52948c107c8f81045e7f9223ec02706b19cfa882
16 | commit_date: 2022-11-11T17:41:21+00:00
17 | fuzz_target: fuzz_target
18 | project: bloaty
19 | unsupported_fuzzers:
20 | - klee
21 | - aflplusplus_cmplog_double
22 | - symcc_aflplusplus_single
23 | - eclipser_aflplusplus
24 | - aflplusplus_qemu_double
25 | - fuzzolic_aflplusplus_z3
26 | - symqemu_aflplusplus
27 | - fuzzolic_aflplusplus_fuzzy
28 | - fuzzolic_aflplusplus_z3dict
29 |
--------------------------------------------------------------------------------
/benchmarks/bloaty_fuzz_target/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | # Copyright 2017 Google Inc.
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | ################################################################################
17 |
18 | cd $WORK
19 | cmake -G Ninja -DBUILD_TESTING=false $SRC/bloaty
20 | ninja -j$(nproc)
21 | cp fuzz_target $OUT
22 | zip -j $OUT/fuzz_target_seed_corpus.zip $SRC/bloaty/tests/testdata/fuzz_corpus/*
23 |
--------------------------------------------------------------------------------
/benchmarks/bloaty_fuzz_target_52948c/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2017 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get install -y \
21 | cmake \
22 | ninja-build \
23 | g++ \
24 | libz-dev
25 |
26 | RUN git clone \
27 | https://github.com/google/bloaty.git
28 |
29 | WORKDIR bloaty
30 | COPY build.sh $SRC/
31 |
--------------------------------------------------------------------------------
/benchmarks/bloaty_fuzz_target_52948c/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # 6440215450877952
16 | commit: 52948c107c8f81045e7f9223ec02706b19cfa882
17 | commit_date: 2022-11-11T17:41:21+00:00
18 | fuzz_target: fuzz_target
19 | project: bloaty
20 | type: bug
21 | unsupported_fuzzers:
22 | - klee
23 | - aflplusplus_cmplog_double
24 | - symcc_aflplusplus_single
25 | - eclipser_aflplusplus
26 | - aflplusplus_qemu_double
27 | - fuzzolic_aflplusplus_z3
28 | - symqemu_aflplusplus
29 | - fuzzolic_aflplusplus_fuzzy
30 | - fuzzolic_aflplusplus_z3dict
31 |
--------------------------------------------------------------------------------
/benchmarks/bloaty_fuzz_target_52948c/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | # Copyright 2017 Google Inc.
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | ################################################################################
17 |
18 | cd $WORK
19 | cmake -G Ninja -DBUILD_TESTING=false $SRC/bloaty
20 | ninja -j$(nproc)
21 | cp fuzz_target $OUT
22 | zip -j $OUT/fuzz_target_seed_corpus.zip $SRC/bloaty/tests/testdata/fuzz_corpus/*
23 |
--------------------------------------------------------------------------------
/benchmarks/curl_curl_fuzzer_http/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2016 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | # Curl will be checked out to the commit hash specified in benchmark.yaml.
20 | RUN git clone https://github.com/curl/curl-fuzzer /src/curl_fuzzer
21 | RUN git -C /src/curl_fuzzer checkout dd486c1e5910e722e43c451d4de928ac80f5967d
22 | RUN git clone --depth 1 https://github.com/curl/curl.git /src/curl
23 |
24 | # Use curl-fuzzer's scripts to get latest dependencies.
25 | RUN $SRC/curl_fuzzer/scripts/ossfuzzdeps.sh
26 |
27 | WORKDIR $SRC/curl_fuzzer
28 | COPY build.sh $SRC/
29 |
--------------------------------------------------------------------------------
/benchmarks/curl_curl_fuzzer_http/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: a20f74a16ae1e89be170eeaa6059b37e513392a4
16 | commit_date: 2022-10-20T09:10:15+00:00
17 | fuzz_target: curl_fuzzer_http
18 | project: curl
19 | unsupported_fuzzers:
20 | - klee
21 | - libfuzzer_dataflow
22 | - libfuzzer_dataflow_load
23 | - libfuzzer_dataflow_store
24 | - centipede
25 | - centipede_function_filter
26 |
--------------------------------------------------------------------------------
/benchmarks/curl_curl_fuzzer_http/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | # Copyright 2016 Google Inc.
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | ################################################################################
17 |
18 | # Run the OSS-Fuzz script in the curl-fuzzer project.
19 | ./ossfuzz.sh
20 |
--------------------------------------------------------------------------------
/benchmarks/freetype2_ftfuzzer/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get upgrade -y && \
21 | apt-get install -y \
22 | make \
23 | autoconf \
24 | libtool \
25 | wget
26 |
27 | RUN git clone git://git.sv.nongnu.org/freetype/freetype2.git
28 | RUN git clone https://github.com/unicode-org/text-rendering-tests.git TRT
29 | RUN wget https://github.com/libarchive/libarchive/releases/download/v3.4.3/libarchive-3.4.3.tar.xz
30 |
31 | COPY * $SRC/
32 |
--------------------------------------------------------------------------------
/benchmarks/freetype2_ftfuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: cd02d359a6d0455e9d16b87bf9665961c4699538
16 | commit_date: 2023-01-28T16:04:38+00:00
17 | fuzz_target: ftfuzzer
18 | project: freetype2
19 |
--------------------------------------------------------------------------------
/benchmarks/freetype2_ftfuzzer/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -ex
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | mkdir $OUT/seeds
17 | # TRT/fonts is the full seed folder, but they're too big
18 | cp TRT/fonts/TestKERNOne.otf $OUT/seeds/
19 | cp TRT/fonts/TestGLYFOne.ttf $OUT/seeds/
20 |
21 | tar xf libarchive-3.4.3.tar.xz
22 |
23 | cd libarchive-3.4.3
24 | ./configure --disable-shared
25 | make clean
26 | make -j $(nproc)
27 | make install
28 | cd ..
29 |
30 | cd freetype2
31 | ./autogen.sh
32 | ./configure --with-harfbuzz=no --with-bzip2=no --with-png=no --without-zlib
33 | make clean
34 | make all -j $(nproc)
35 |
36 | $CXX $CXXFLAGS -std=c++11 -I include -I . src/tools/ftfuzzer/ftfuzzer.cc \
37 | objs/.libs/libfreetype.a $FUZZER_LIB -L /usr/local/lib -larchive \
38 | -o $OUT/ftfuzzer
39 |
--------------------------------------------------------------------------------
/benchmarks/harfbuzz_hb-shape-fuzzer/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get install -y ragel pkg-config
21 |
22 | RUN git clone https://github.com/harfbuzz/harfbuzz.git
23 |
24 | WORKDIR harfbuzz
25 | COPY build.sh $SRC/
26 |
--------------------------------------------------------------------------------
/benchmarks/harfbuzz_hb-shape-fuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: cb47dca74cbf6d147aac9cf3067f249555aa68b1
16 | commit_date: 2023-01-29T17:03:52+00:00
17 | fuzz_target: hb-shape-fuzzer
18 | project: harfbuzz
19 | unsupported_fuzzers:
20 | - klee
21 |
--------------------------------------------------------------------------------
/benchmarks/harfbuzz_hb-shape-fuzzer_17863b/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get install -y ragel pkg-config
21 |
22 | RUN git clone https://github.com/harfbuzz/harfbuzz.git
23 |
24 | WORKDIR harfbuzz
25 | COPY build.sh $SRC/
26 |
--------------------------------------------------------------------------------
/benchmarks/harfbuzz_hb-shape-fuzzer_17863b/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # 4523349576908800
16 | commit: 17863BD16BC82C54FB68627CBF1E65702693DD09
17 | commit_date: 2022-07-23T04:38:08+0000
18 | fuzz_target: hb-shape-fuzzer
19 | project: harfbuzz
20 | type: bug
21 | unsupported_fuzzers:
22 | - klee
23 |
--------------------------------------------------------------------------------
/benchmarks/jsoncpp_jsoncpp_fuzzer/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2019 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 | RUN apt-get update && apt-get install -y build-essential make curl wget
19 |
20 | # Install latest cmake.
21 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh && \
22 | chmod +x cmake-3.14.5-Linux-x86_64.sh && \
23 | ./cmake-3.14.5-Linux-x86_64.sh --skip-license --prefix="/usr/local"
24 |
25 | RUN git clone https://github.com/open-source-parsers/jsoncpp
26 | WORKDIR jsoncpp
27 |
28 | COPY build.sh $SRC/
29 |
30 |
--------------------------------------------------------------------------------
/benchmarks/jsoncpp_jsoncpp_fuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: 8190e061bc2d95da37479a638aa2c9e483e58ec6
16 | commit_date: 2022-07-14T21:57:37+00:00
17 | fuzz_target: jsoncpp_fuzzer
18 | project: jsoncpp
19 | unsupported_fuzzers:
20 | - klee
21 | - aflplusplus_cmplog_double
22 | - symcc_aflplusplus_single
23 | - eclipser_aflplusplus
24 | - aflplusplus_qemu_double
25 | - fuzzolic_aflplusplus_z3
26 | - symqemu_aflplusplus
27 | - fuzzolic_aflplusplus_fuzzy
28 | - fuzzolic_aflplusplus_z3dict
29 |
--------------------------------------------------------------------------------
/benchmarks/jsoncpp_jsoncpp_fuzzer/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | # Copyright 2018 Google Inc.
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | ################################################################################
17 |
18 | mkdir -p build
19 | cd build
20 | cmake -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
21 | -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF -DJSONCPP_WITH_TESTS=OFF \
22 | -DBUILD_SHARED_LIBS=OFF -G "Unix Makefiles" ..
23 | make
24 |
25 | # Compile fuzzer.
26 | $CXX $CXXFLAGS -I../include $LIB_FUZZING_ENGINE \
27 | ../src/test_lib_json/fuzz.cpp -o $OUT/jsoncpp_fuzzer \
28 | lib/libjsoncpp.a
29 |
30 | # Add dictionary.
31 | cp $SRC/jsoncpp/src/test_lib_json/fuzz.dict $OUT/jsoncpp_fuzzer.dict
32 |
--------------------------------------------------------------------------------
/benchmarks/lcms_cms_transform_fuzzer/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get install -y \
21 | make \
22 | automake \
23 | libtool \
24 | wget
25 |
26 | RUN git clone https://github.com/mm2/Little-CMS.git
27 |
28 | RUN wget -qO $OUT/cms_transform_fuzzer.dict \
29 | https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/icc.dict
30 | COPY cms_transform_fuzzer.cc build.sh $SRC/
31 | ADD seeds /opt/seeds
32 |
--------------------------------------------------------------------------------
/benchmarks/lcms_cms_transform_fuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: f0d963261b28253999e239a844ac74d5a8960f40
16 | commit_date: 2023-01-25T18:20:28+0000
17 | fuzz_target: cms_transform_fuzzer
18 | project: lcms
19 | unsupported_fuzzers:
20 | - symcc_afl
21 | - symcc_afl_single
22 | - symcc_aflplusplus
23 | - afldd
24 | - aflpp_vs_dd
25 |
--------------------------------------------------------------------------------
/benchmarks/lcms_cms_transform_fuzzer/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -ex
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | cd Little-CMS
17 | ./autogen.sh
18 | ./configure
19 | make -j $(nproc)
20 |
21 | $CXX $CXXFLAGS $SRC/cms_transform_fuzzer.cc -I include/ src/.libs/liblcms2.a \
22 | $FUZZER_LIB -o $OUT/cms_transform_fuzzer
23 | cp -r /opt/seeds $OUT/
24 |
--------------------------------------------------------------------------------
/benchmarks/lcms_cms_transform_fuzzer/seeds/seed:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/lcms_cms_transform_fuzzer/seeds/seed
--------------------------------------------------------------------------------
/benchmarks/libjpeg-turbo_libjpeg_turbo_fuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: 3b19db4e6e7493a748369974819b4c5fa84c7614
16 | commit_date: 2023-01-28T00:24:41+00:00
17 | fuzz_target: libjpeg_turbo_fuzzer
18 | project: libjpeg-turbo
19 | unsupported_fuzzers:
20 | - aflcc
21 |
--------------------------------------------------------------------------------
/benchmarks/libjpeg-turbo_libjpeg_turbo_fuzzer/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -ex
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | set -e
17 | set -u
18 |
19 | cat fuzz/branches.txt | while read branch; do
20 | pushd libjpeg-turbo.$branch
21 | if [ "$branch" = "main" ]; then
22 | sh fuzz/build.sh
23 | else
24 | sh fuzz/build.sh _$branch
25 | fi
26 | popd
27 | done
28 |
--------------------------------------------------------------------------------
/benchmarks/libjpeg-turbo_libjpeg_turbo_fuzzer/seeds/seed.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/libjpeg-turbo_libjpeg_turbo_fuzzer/seeds/seed.jpg
--------------------------------------------------------------------------------
/benchmarks/libpcap_fuzz_both/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2018 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 | RUN apt-get update && \
19 | apt-get install -y make cmake flex bison
20 |
21 | RUN git clone https://github.com/the-tcpdump-group/libpcap.git libpcap
22 |
23 | # For corpus as wireshark.
24 | RUN git clone https://github.com/the-tcpdump-group/tcpdump.git tcpdump && \
25 | git -C tcpdump checkout 032e4923e5202ea4d5a6d1cead83ed1927135874
26 |
27 | WORKDIR $SRC
28 | COPY build.sh $SRC/
29 |
30 |
--------------------------------------------------------------------------------
/benchmarks/libpcap_fuzz_both/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: 17ff63e88ea99112a905eefc6f862dac20de09e1
16 | commit_date: 2023-01-07T10:15:39+0000
17 | fuzz_target: fuzz_both
18 | project: libpcap
19 | unsupported_fuzzers:
20 | - klee
21 | - symcc_afl
22 | - symcc_afl_single
23 | - symcc_aflplusplus
24 | - symcc_aflplusplus_single
25 | - aflplusplus_cmplog_double
26 | - eclipser_aflplusplus
27 | - aflplusplus_qemu_double
28 | - fuzzolic_aflplusplus_z3
29 | - symqemu_aflplusplus
30 | - fuzzolic_aflplusplus_fuzzy
31 | - fuzzolic_aflplusplus_z3dict
32 | - afldd
33 | - aflpp_vs_dd
34 |
--------------------------------------------------------------------------------
/benchmarks/libpng_libpng_read_fuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: cd0ea2a7f53b603d3d9b5b891c779c430047b39a
16 | commit_date: 2023-01-09T13:17:31+00:00
17 | fuzz_target: libpng_read_fuzzer
18 | project: libpng
19 |
--------------------------------------------------------------------------------
/benchmarks/libpng_libpng_read_fuzzer/seeds/seed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/libpng_libpng_read_fuzzer/seeds/seed.png
--------------------------------------------------------------------------------
/benchmarks/libxml2_xml/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get install -y --no-install-recommends \
21 | make autoconf libtool pkg-config \
22 | zlib1g-dev zlib1g-dev:i386 liblzma-dev liblzma-dev:i386
23 |
24 | # Build requires automake 1.16.3
25 | RUN curl -LO http://mirrors.kernel.org/ubuntu/pool/main/a/automake-1.16/automake_1.16.5-1.3_all.deb && \
26 | apt install ./automake_1.16.5-1.3_all.deb
27 |
28 | RUN git clone https://gitlab.gnome.org/GNOME/libxml2.git
29 |
30 | WORKDIR libxml2
31 | COPY build.sh $SRC/
32 |
--------------------------------------------------------------------------------
/benchmarks/libxml2_xml/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: c7260a47f19e01f4f663b6a56fbdc2dafd8a6e7e
16 | commit_date: 2023-01-23T09:19:59+00:00
17 | fuzz_target: xml
18 | project: libxml2
19 |
--------------------------------------------------------------------------------
/benchmarks/libxml2_xml/target.cc:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #include
16 | #include
17 | #include "libxml/xmlversion.h"
18 | #include "libxml/parser.h"
19 | #include "libxml/HTMLparser.h"
20 | #include "libxml/tree.h"
21 |
22 | void ignore (void * ctx, const char * msg, ...) {}
23 |
24 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
25 | xmlSetGenericErrorFunc(NULL, &ignore);
26 | if (auto doc = xmlReadMemory(reinterpret_cast(data), size,
27 | "noname.xml", NULL, 0))
28 | xmlFreeDoc(doc);
29 | return 0;
30 | }
31 |
--------------------------------------------------------------------------------
/benchmarks/libxml2_xml_e85b9b/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get install -y --no-install-recommends \
21 | make autoconf libtool pkg-config \
22 | zlib1g-dev zlib1g-dev:i386 liblzma-dev liblzma-dev:i386
23 |
24 | # Build requires automake 1.16.3
25 | RUN curl -LO http://mirrors.kernel.org/ubuntu/pool/main/a/automake-1.16/automake_1.16.5-1.3_all.deb && \
26 | apt install ./automake_1.16.5-1.3_all.deb
27 |
28 | RUN git clone https://gitlab.gnome.org/GNOME/libxml2.git
29 |
30 | WORKDIR libxml2
31 | COPY build.sh $SRC/
32 |
--------------------------------------------------------------------------------
/benchmarks/libxml2_xml_e85b9b/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # 6233968358064128
16 | commit: E85F9B98A5389C69167176AE6600091E719EC38F
17 | commit_date: 2022-10-19T00:47:30+0000
18 | fuzz_target: xml
19 | project: libxml2
20 | type: bug
21 |
--------------------------------------------------------------------------------
/benchmarks/libxml2_xml_e85b9b/target.cc:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #include
16 | #include
17 | #include "libxml/xmlversion.h"
18 | #include "libxml/parser.h"
19 | #include "libxml/HTMLparser.h"
20 | #include "libxml/tree.h"
21 |
22 | void ignore (void * ctx, const char * msg, ...) {}
23 |
24 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
25 | xmlSetGenericErrorFunc(NULL, &ignore);
26 | if (auto doc = xmlReadMemory(reinterpret_cast(data), size,
27 | "noname.xml", NULL, 0))
28 | xmlFreeDoc(doc);
29 | return 0;
30 | }
31 |
--------------------------------------------------------------------------------
/benchmarks/libxslt_xpath/benchmark.yaml:
--------------------------------------------------------------------------------
1 | commit: 180cdb804efedcba363016fcf6cd3dbd2adca607
2 | commit_date: 2023-01-18T15:21:36+00:00
3 | fuzz_target: xpath
4 | project: libxslt
5 | unsupported_fuzzers:
6 | - aflcc
7 | - aflplusplus_qemu
8 | - aflplusplus_um_random
9 | - aflplusplus_um_random_75
10 | - aflplusplus_um_random_3
11 | - aflplusplus_um_random_6
12 | - aflplusplus_um_prioritize
13 | - aflplusplus_um_prioritize_75
14 | - aflplusplus_um_parallel
15 | - afl_um_random
16 | - afl_um_prioritize
17 | - afl_um_parallel
18 | - honggfuzz_um_random
19 | - honggfuzz_um_random_75
20 | - honggfuzz_um_prioritize
21 | - honggfuzz_um_prioritize_75
22 | - honggfuzz_um_parallel
23 | - eclipser_um_random
24 | - eclipser_um_random_75
25 | - eclipser_um_prioritize
26 | - eclipser_um_prioritize_75
27 | - eclipser_um_parallel
28 | - libfuzzer_um_random
29 | - libfuzzer_um_random_75
30 | - libfuzzer_um_prioritize
31 | - libfuzzer_um_prioritize_75
32 | - libfuzzer_um_parallel
33 | - aflplusplus_qemu_tracepc
34 | - aflplusplus_frida
35 | - klee
36 | - weizz_qemu
37 | - aflplusplus_cmplog_double
38 | - symcc_aflplusplus_single
39 | - eclipser_aflplusplus
40 | - aflplusplus_qemu_double
41 | - fuzzolic_aflplusplus_z3
42 | - symqemu_aflplusplus
43 | - fuzzolic_aflplusplus_fuzzy
44 | - fuzzolic_aflplusplus_z3dict
45 |
--------------------------------------------------------------------------------
/benchmarks/mbedtls_fuzz_dtlsclient/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: 169d9e6eb4096cb48aa25651f42b276089841087
16 | commit_date: 2023-01-27T09:05:00+00:00
17 | fuzz_target: fuzz_dtlsclient
18 | project: mbedtls
19 | unsupported_fuzzers:
20 | - klee
21 |
--------------------------------------------------------------------------------
/benchmarks/mbedtls_fuzz_dtlsclient_7c6b0e/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # 6244298269523968
16 | commit: 7C6B0E4464E1C39B2CFC572AC6BD0674A104FFC5
17 | commit_date: 2022-10-25T17:55:29+0000
18 | fuzz_target: fuzz_dtlsclient
19 | project: mbedtls
20 | type: bug
21 | unsupported_fuzzers:
22 | - klee
23 |
--------------------------------------------------------------------------------
/benchmarks/mruby_mruby_fuzzer_8c8bbd/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2019 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 | RUN apt-get update && apt-get install -y build-essential ruby bison ninja-build \
19 | cmake zlib1g-dev libbz2-dev liblzma-dev
20 | RUN git clone \
21 | https://github.com/mruby/mruby
22 | RUN git clone --depth 1 https://github.com/bshastry/mruby_seeds.git mruby_seeds
23 | WORKDIR mruby
24 | COPY build.sh *.c *.options *.dict $SRC/
25 |
--------------------------------------------------------------------------------
/benchmarks/mruby_mruby_fuzzer_8c8bbd/benchmark.yaml:
--------------------------------------------------------------------------------
1 | commit: 8c8bbd94dce3b3eabcf72c674e690516c075b0ee
2 | commit_date: 2023-02-03T04:41:10+0000
3 | fuzz_target: mruby_fuzzer
4 | project: mruby
5 | type: bug
6 | unsupported_fuzzers:
7 |
--------------------------------------------------------------------------------
/benchmarks/mruby_mruby_fuzzer_8c8bbd/mruby_fuzzer.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 |
6 | int LLVMFuzzerTestOneInput(uint8_t *Data, size_t size) {
7 | if (size < 1) {
8 | return 0;
9 | }
10 | char *code = malloc(size+1);
11 | memcpy(code, Data, size);
12 | code[size] = '\0';
13 | mrb_state *mrb = mrb_open();
14 | mrb_load_string(mrb, code);
15 | mrb_close(mrb);
16 | free(code);
17 | return 0;
18 | }
19 |
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2018 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 | MAINTAINER twsmith@mozilla.com
19 |
20 | RUN dpkg --add-architecture i386 && \
21 | apt-get update && \
22 | apt-get install -y \
23 | libstdc++-9-dev libstdc++-9-dev:i386 nasm subversion
24 |
25 | RUN git clone \
26 | https://github.com/cisco/openh264.git
27 |
28 | WORKDIR openh264
29 | COPY build.sh decoder_fuzzer.cpp $SRC/
30 |
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | commit: 045aeac1dd01df12dec7b1ef8191b3193cf4273c
2 | commit_date: 2023-01-04T08:01:08+00:00
3 | fuzz_target: decoder_fuzzer
4 | project: openh264
5 | unsupported_fuzzers:
6 | - aflcc
7 | - afl_qemu
8 | - aflplusplus_qemu
9 | - aflplusplus_qemu_tracepc
10 | - aflplusplus_frida
11 | - honggfuzz_qemu
12 | - klee
13 | - lafintel
14 | - weizz_qemu
15 | - aflplusplus_cmplog_double
16 | - symcc_aflplusplus_single
17 | - eclipser_aflplusplus
18 | - aflplusplus_qemu_double
19 | - fuzzolic_aflplusplus_z3
20 | - symqemu_aflplusplus
21 | - fuzzolic_aflplusplus_fuzzy
22 | - fuzzolic_aflplusplus_z3dict
23 | - tortoisefuzz
24 |
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | # Copyright 2018 Google Inc.
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | ################################################################################
17 |
18 | # build
19 | if [[ $CXXFLAGS = *sanitize=memory* ]]; then
20 | ASM_BUILD=No
21 | else
22 | ASM_BUILD=Yes
23 | fi
24 | make -j$(nproc) ARCH=$ARCHITECTURE USE_ASM=$ASM_BUILD BUILDTYPE=Debug libraries
25 | $CXX $CXXFLAGS -o $OUT/decoder_fuzzer -I./codec/api/wels -I./codec/console/common/inc -I./codec/common/inc -L. $LIB_FUZZING_ENGINE $SRC/decoder_fuzzer.cpp libopenh264.a
26 |
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18438:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18438
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18458:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18458
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18459:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18459
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18460:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18460
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18480:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18480
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18486:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18486
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18520:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18520
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18521:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18521
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18522:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18522
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18533:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18533
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18644:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18644
--------------------------------------------------------------------------------
/benchmarks/openh264_decoder_fuzzer/testcases/18743:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18743
--------------------------------------------------------------------------------
/benchmarks/openssl_x509/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2016 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 | RUN apt-get update && apt-get install -y make
19 | RUN git clone \
20 | --depth 1 \
21 | --branch openssl-3.0.7 \
22 | https://github.com/openssl/openssl.git
23 | WORKDIR openssl
24 | COPY build.sh $SRC/
25 |
--------------------------------------------------------------------------------
/benchmarks/openssl_x509/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: b0593c086dd303af31dc1e30233149978dd613c4
16 | commit_date: 2020-02-10 09:22:32+00:00
17 | fuzz_target: x509
18 | project: openssl
19 | unsupported_fuzzers:
20 | - klee
21 | - cfctx_dataflow_svf
22 | - cfctx_dataflow_svf_llc
23 | - tortoisefuzz
24 |
--------------------------------------------------------------------------------
/benchmarks/openthread_ot-ip6-send-fuzzer/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && apt-get install -y cmake ninja-build
20 | RUN git clone https://github.com/openthread/openthread
21 |
22 | WORKDIR openthread
23 | COPY build.sh *.options $SRC/
24 |
--------------------------------------------------------------------------------
/benchmarks/openthread_ot-ip6-send-fuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | commit: 25506997f286fdbfa72725f4cee78c922c896255
16 | commit_date: 2023-01-26T18:02:16+00:00
17 | fuzz_target: ot-ip6-send-fuzzer
18 | project: openthread
19 | unsupported_fuzzers:
20 | - klee
21 |
--------------------------------------------------------------------------------
/benchmarks/openthread_ot-ip6-send-fuzzer/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -ex
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | bash tests/fuzz/oss-fuzz-build
17 |
--------------------------------------------------------------------------------
/benchmarks/php_php-fuzz-parser_0dbedb/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2019 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 |
19 | RUN apt-get update && \
20 | apt-get install -y \
21 | autoconf automake libtool bison re2c pkg-config
22 |
23 | RUN git clone \
24 | https://github.com/php/php-src.git
25 |
26 | WORKDIR php-src
27 | COPY build.sh *.options $SRC/
28 |
--------------------------------------------------------------------------------
/benchmarks/php_php-fuzz-parser_0dbedb/cosmic.list:
--------------------------------------------------------------------------------
1 | deb http://archive.ubuntu.com/ubuntu/ cosmic universe
2 |
3 |
--------------------------------------------------------------------------------
/benchmarks/php_php-fuzz-parser_0dbedb/testcases/24387:
--------------------------------------------------------------------------------
1 |
16 | #include
17 |
18 | #include "woff2_dec.h"
19 |
20 | // Entry point for LibFuzzer.
21 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
22 | std::string buf;
23 | woff2::WOFF2StringOut out(&buf);
24 | out.SetMaxSize(30 * 1024 * 1024);
25 | woff2::ConvertWOFF2ToTTF(data, size, &out);
26 | return 0;
27 | }
28 |
--------------------------------------------------------------------------------
/benchmarks/zlib_zlib_uncompress_fuzzer/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2016 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd
18 | RUN apt-get update && apt-get install -y make autoconf automake libtool
19 | RUN git clone --depth 1 -b develop https://github.com/madler/zlib.git
20 | WORKDIR zlib
21 | COPY build.sh zlib_uncompress_fuzzer.cc $SRC/
22 |
--------------------------------------------------------------------------------
/benchmarks/zlib_zlib_uncompress_fuzzer/benchmark.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################i
16 |
17 | commit: d71dc66fa8a153fb6e7c626847095d9697a6cf42
18 | commit_date: 2020-05-06 00:00:00+00:00
19 | fuzz_target: zlib_uncompress_fuzzer
20 | project: zlib
21 |
--------------------------------------------------------------------------------
/benchmarks/zlib_zlib_uncompress_fuzzer/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | # Copyright 2016 Google Inc.
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 | ################################################################################
17 |
18 | ./configure
19 | make -j$(nproc) clean
20 | make -j$(nproc) all
21 |
22 | # Do not make check as there are tests that fail when compiled with MSAN.
23 | # make -j$(nproc) check
24 |
25 | b=$(basename -s .cc $SRC/zlib_uncompress_fuzzer.cc)
26 | $CXX $CXXFLAGS -std=c++11 -I. $SRC/zlib_uncompress_fuzzer.cc -o $OUT/$b $LIB_FUZZING_ENGINE ./libz.a
27 |
28 | zip $OUT/seed_corpus.zip *.*
29 |
--------------------------------------------------------------------------------
/benchmarks/zlib_zlib_uncompress_fuzzer/zlib_uncompress_fuzzer.cc:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Chromium Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style license that can be
3 | // found in the LICENSE file.
4 |
5 | #include
6 | #include
7 | #include
8 |
9 | #include "zlib.h"
10 |
11 | static Bytef buffer[256 * 1024] = { 0 };
12 |
13 | // Entry point for LibFuzzer.
14 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
15 | uLongf buffer_length = static_cast(sizeof(buffer));
16 | if (Z_OK != uncompress(buffer, &buffer_length, data,
17 | static_cast(size))) {
18 | return 0;
19 | }
20 | return 0;
21 | }
22 |
--------------------------------------------------------------------------------
/common/config_utils.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | """Provides helper functions to obtain configurations."""
16 |
17 |
18 | def validate_and_expand(config):
19 | """Validates |config| and returns the expanded configuration."""
20 | # TODO: move the logic from experiment/run_experiment.py to here.
21 | return config
22 |
--------------------------------------------------------------------------------
/common/fuzzer_config.py:
--------------------------------------------------------------------------------
1 | # Copyright 2022 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Tools for using oss-fuzz."""
15 | import functools
16 | import os
17 |
18 | from common import utils
19 | from common import yaml_utils
20 |
21 | FUZZERS_DIR = os.path.join(utils.ROOT_DIR, 'fuzzers')
22 |
23 |
24 | def get_config_file(fuzzer):
25 | """Returns the path to the config for a fuzzer."""
26 | return os.path.join(FUZZERS_DIR, fuzzer, 'fuzzer.yaml')
27 |
28 |
29 | @functools.lru_cache(maxsize=None)
30 | def get_config(fuzzer):
31 | """Returns a dictionary containing the config for a fuzzer."""
32 | config_file = get_config_file(fuzzer)
33 | if os.path.exists(config_file):
34 | return yaml_utils.read(config_file)
35 | return {}
36 |
--------------------------------------------------------------------------------
/common/queue_utils.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Code for setting up a work queue with rq."""
15 | import redis
16 | import rq
17 | import rq.job
18 |
19 | from common import experiment_utils
20 |
21 |
22 | def initialize_queue(redis_host):
23 | """Returns a redis-backed rq queue."""
24 | queue_name = experiment_utils.get_experiment_name()
25 | redis_connection = redis.Redis(host=redis_host)
26 | queue = rq.Queue(queue_name, connection=redis_connection)
27 | return queue
28 |
29 |
30 | def get_all_jobs(queue):
31 | """Returns all the jobs in queue."""
32 | job_ids = queue.get_job_ids()
33 | return rq.job.Job.fetch_many(job_ids, queue.connection)
34 |
--------------------------------------------------------------------------------
/common/test_common_utils.py:
--------------------------------------------------------------------------------
1 | # Copyright 2024 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Tests for utils.py"""
15 |
16 | from common import utils
17 |
18 |
19 | def test_get_retry_delay():
20 | """"Tests if get delay is working as expected"""
21 | delay = 3
22 | backoff = 2
23 |
24 | first_try = 1
25 | first_try_delay = utils.get_retry_delay(first_try, delay, backoff)
26 | # Backoff should have no effect on first try
27 | assert first_try_delay == delay
28 |
29 | second_try = 2
30 | second_try_delay = utils.get_retry_delay(second_try, delay, backoff)
31 | assert second_try_delay == delay * backoff
32 |
--------------------------------------------------------------------------------
/common/test_data/printer.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | """Test program used by new_process's integration tests."""
16 |
17 | import sys
18 | import time
19 |
20 |
21 | def main():
22 | """Print and sleep in an infinite loop."""
23 | while True:
24 | print('Hello, World!')
25 | sys.stdout.flush()
26 | time.sleep(10)
27 |
28 |
29 | if __name__ == '__main__':
30 | main()
31 |
--------------------------------------------------------------------------------
/common/yaml_utils.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Yaml helpers."""
15 | import yaml
16 |
17 |
18 | def read(yaml_filename):
19 | """Reads and loads yaml file specified by |yaml_filename|."""
20 | with open(yaml_filename, encoding='utf-8') as file_handle:
21 | return yaml.load(file_handle, yaml.SafeLoader)
22 |
23 |
24 | def write(yaml_filename, data):
25 | """Writes |data| to a new yaml file at |yaml_filename|."""
26 | with open(yaml_filename, 'w', encoding='utf-8') as file_handle:
27 | return yaml.dump(data, file_handle)
28 |
--------------------------------------------------------------------------------
/compose/e2e-test.yaml:
--------------------------------------------------------------------------------
1 | version: "3"
2 |
3 | services:
4 |
5 | run-tests:
6 | image: fuzzbench
7 | links:
8 | - queue-server
9 | environment:
10 | E2E_INTEGRATION_TEST: 1
11 | command: python3 -m pytest -vv fuzzbench/test_e2e/test_e2e_run.py
12 |
13 | run-experiment:
14 | environment:
15 | EXPERIMENT_CONFIG: fuzzbench/test_e2e/end-to-end-test-config.yaml
16 |
--------------------------------------------------------------------------------
/compose/fuzzbench.yaml:
--------------------------------------------------------------------------------
1 | version: "3"
2 |
3 | services:
4 |
5 | run-experiment:
6 | image: fuzzbench
7 | build:
8 | context: ../
9 | dockerfile: docker/fuzzbench/Dockerfile
10 | links:
11 | - queue-server
12 |
13 | worker:
14 | image: fuzzbench
15 | environment:
16 | RQ_REDIS_URL: redis://queue-server
17 | PYTHONPATH: .
18 | command: python3 fuzzbench/worker.py
19 | volumes:
20 | # Allow access to the host's docker daemon.
21 | - /var/run/docker.sock:/var/run/docker.sock
22 | links:
23 | - queue-server
24 | depends_on:
25 | - run-experiment
26 |
27 | queue-server:
28 | image: redis
29 |
--------------------------------------------------------------------------------
/database/alembic/README:
--------------------------------------------------------------------------------
1 | Generic single-database configuration.
--------------------------------------------------------------------------------
/database/alembic/script.py.mako:
--------------------------------------------------------------------------------
1 | """${message}
2 |
3 | Revision ID: ${up_revision}
4 | Revises: ${down_revision | comma,n}
5 | Create Date: ${create_date}
6 |
7 | """
8 | from alembic import op
9 | import sqlalchemy as sa
10 | ${imports if imports else ""}
11 |
12 | # revision identifiers, used by Alembic.
13 | revision = ${repr(up_revision)}
14 | down_revision = ${repr(down_revision)}
15 | branch_labels = ${repr(branch_labels)}
16 | depends_on = ${repr(depends_on)}
17 |
18 |
19 | def upgrade():
20 | ${upgrades if upgrades else "pass"}
21 |
22 |
23 | def downgrade():
24 | ${downgrades if downgrades else "pass"}
25 |
--------------------------------------------------------------------------------
/database/alembic/versions/26dcc0e12872_add_experiment_description.py:
--------------------------------------------------------------------------------
1 | """Add experiment description
2 |
3 | Revision ID: 26dcc0e12872
4 | Revises: c83ac04855b4
5 | Create Date: 2020-10-13 09:04:25.881798
6 |
7 | """
8 | from alembic import op
9 | import sqlalchemy as sa
10 |
11 |
12 | # revision identifiers, used by Alembic.
13 | revision = '26dcc0e12872'
14 | down_revision = 'c83ac04855b4'
15 | branch_labels = None
16 | depends_on = None
17 |
18 |
19 | def upgrade():
20 | op.add_column('experiment', sa.Column(
21 | 'description', sa.UnicodeText(), nullable=True))
22 |
23 |
24 | def downgrade():
25 | op.drop_column('experiment', 'description')
26 |
--------------------------------------------------------------------------------
/database/alembic/versions/43dc3aacd80e_git_hash.py:
--------------------------------------------------------------------------------
1 | """git_hash
2 |
3 | Revision ID: 43dc3aacd80e
4 | Revises: a7089f396110
5 | Create Date: 2020-03-27 10:48:08.075971
6 |
7 | """
8 | from alembic import op
9 | import sqlalchemy as sa
10 |
11 | # revision identifiers, used by Alembic.
12 | revision = '43dc3aacd80e'
13 | down_revision = 'a7089f396110'
14 | branch_labels = None
15 | depends_on = None
16 |
17 |
18 | def upgrade():
19 | # ### commands auto generated by Alembic - please adjust! ###
20 | op.add_column('experiment', sa.Column('git_hash',
21 | sa.String(),
22 | nullable=True))
23 | # ### end Alembic commands ###
24 |
25 |
26 | def downgrade():
27 | # ### commands auto generated by Alembic - please adjust! ###
28 | op.drop_column('experiment', 'git_hash')
29 | # ### end Alembic commands ###
30 |
--------------------------------------------------------------------------------
/database/alembic/versions/541d041d662a_support_private.py:
--------------------------------------------------------------------------------
1 | """Support private
2 |
3 | Revision ID: 541d041d662a
4 | Revises: 72f7db0e7dfe
5 | Create Date: 2020-07-09 16:11:47.498579
6 |
7 | """
8 | from alembic import op
9 | import sqlalchemy as sa
10 |
11 |
12 | # revision identifiers, used by Alembic.
13 | revision = '541d041d662a'
14 | down_revision = '72f7db0e7dfe'
15 | branch_labels = None
16 | depends_on = None
17 |
18 |
19 | def upgrade():
20 | # ### commands auto generated by Alembic - please adjust! ###
21 | op.add_column('experiment', sa.Column(
22 | 'private', sa.Boolean(), nullable=True))
23 |
24 | # Let's make every experiment we've done so far private so we don't leak any
25 | # nonpublic experiments we've done, the ones we want we can mark as
26 | # nonprivate.
27 | op.execute('UPDATE experiment SET private = true')
28 | op.alter_column('experiment', 'private', nullable=False)
29 | # ### end Alembic commands ###
30 |
31 |
32 | def downgrade():
33 | # ### commands auto generated by Alembic - please adjust! ###
34 | op.drop_column('experiment', 'private')
35 | # ### end Alembic commands ###
36 |
--------------------------------------------------------------------------------
/database/alembic/versions/72f7db0e7dfe_support_preemptibles.py:
--------------------------------------------------------------------------------
1 | """Support preemptibles
2 |
3 | Revision ID: 72f7db0e7dfe
4 | Revises: 43dc3aacd80e
5 | Create Date: 2020-05-21 10:43:00.687089
6 |
7 | """
8 | from alembic import op
9 | import sqlalchemy as sa
10 |
11 |
12 | # revision identifiers, used by Alembic.
13 | revision = '72f7db0e7dfe'
14 | down_revision = '43dc3aacd80e'
15 | branch_labels = None
16 | depends_on = None
17 |
18 |
19 | def upgrade():
20 | # ### commands auto generated by Alembic - please adjust! ###
21 | op.add_column('trial', sa.Column('preempted', sa.Boolean(), nullable=True))
22 | op.execute('UPDATE trial SET preempted = false WHERE preempted IS NULL')
23 | op.alter_column('trial', 'preempted', nullable=False)
24 |
25 | op.add_column('trial', sa.Column('preemptible', sa.Boolean(), nullable=True))
26 | op.execute('UPDATE trial SET preemptible = false WHERE preemptible IS NULL')
27 | op.alter_column('trial', 'preemptible', nullable=False)
28 |
29 | # ### end Alembic commands ###
30 |
31 |
32 | def downgrade():
33 | # ### commands auto generated by Alembic - please adjust! ###
34 | op.drop_column('trial', 'preemptible')
35 | op.drop_column('trial', 'preempted')
36 | # ### end Alembic commands ###
37 |
--------------------------------------------------------------------------------
/database/alembic/versions/77022369cea4_time_ended.py:
--------------------------------------------------------------------------------
1 | """time_ended
2 |
3 | Revision ID: 77022369cea4
4 | Revises: 541d041d662a
5 | Create Date: 2020-08-10 22:27:28.544136
6 |
7 | """
8 | from alembic import op
9 | import sqlalchemy as sa
10 |
11 |
12 | # revision identifiers, used by Alembic.
13 | revision = '77022369cea4'
14 | down_revision = '541d041d662a'
15 | branch_labels = None
16 | depends_on = None
17 |
18 |
19 | def upgrade():
20 | # ### commands auto generated by Alembic - please adjust! ###
21 | op.add_column('experiment', sa.Column('time_ended',
22 | sa.DateTime(),
23 | nullable=True))
24 |
25 | # ### end Alembic commands ###
26 |
27 |
28 | def downgrade():
29 | # ### commands auto generated by Alembic - please adjust! ###
30 | op.drop_column('experiment', 'time_ended')
31 | # ### end Alembic commands ###
32 |
--------------------------------------------------------------------------------
/database/alembic/versions/c83ac04855b4_add_filestore_name.py:
--------------------------------------------------------------------------------
1 | """Add filestore name
2 |
3 | Revision ID: c83ac04855b4
4 | Revises: 77022369cea4
5 | Create Date: 2020-08-11 16:31:36.089779
6 |
7 | """
8 | from alembic import op
9 | import sqlalchemy as sa
10 |
11 |
12 | # revision identifiers, used by Alembic.
13 | revision = 'c83ac04855b4'
14 | down_revision = '77022369cea4'
15 | branch_labels = None
16 | depends_on = None
17 |
18 |
19 | def upgrade():
20 | # ### commands auto generated by Alembic - please adjust! ###
21 | op.add_column('experiment', sa.Column(
22 | 'experiment_filestore', sa.String(), nullable=True))
23 | # ### end Alembic commands ###
24 |
25 |
26 | def downgrade():
27 | # ### commands auto generated by Alembic - please adjust! ###
28 | op.drop_column('experiment', 'experiment_filestore')
29 | # ### end Alembic commands ###
30 |
--------------------------------------------------------------------------------
/database/alembic/versions/eec6e5667b87_add_fuzzer_stats.py:
--------------------------------------------------------------------------------
1 | """Add fuzzer stats
2 |
3 | Revision ID: eec6e5667b87
4 | Revises: 26dcc0e12872
5 | Create Date: 2020-10-16 10:31:36.241617
6 |
7 | """
8 | from alembic import op
9 | import sqlalchemy as sa
10 |
11 |
12 | # revision identifiers, used by Alembic.
13 | revision = 'eec6e5667b87'
14 | down_revision = '26dcc0e12872'
15 | branch_labels = None
16 | depends_on = None
17 |
18 |
19 | def upgrade():
20 | # ### commands auto generated by Alembic - please adjust! ###
21 | op.add_column('snapshot', sa.Column('fuzzer_stats', sa.JSON(), nullable=True))
22 | # ### end Alembic commands ###
23 |
24 |
25 | def downgrade():
26 | # ### commands auto generated by Alembic - please adjust! ###
27 | op.drop_column('snapshot', 'fuzzer_stats')
28 | # ### end Alembic commands ###
29 |
--------------------------------------------------------------------------------
/docker/benchmark-builder/fuzzer_build:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Copyright 2023 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | PYTHONPATH=$SRC python3 -u -c "from fuzzers import utils; utils.initialize_env(); from fuzzers.$FUZZER import fuzzer; fuzzer.build()"
--------------------------------------------------------------------------------
/docker/benchmark-runner/startup-runner.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash -e
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | # The runner runs at a higher priority than other processes to ensure that it's
17 | # able to finish infrastructure tasks regardless of the fuzzing workload.
18 | export RUNNER_NICENESS="-5"
19 | nice -n $RUNNER_NICENESS python3 $ROOT_DIR/experiment/runner.py
20 |
--------------------------------------------------------------------------------
/docker/worker/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | ENV WORK /work
18 | ENV SRC $WORK/src
19 | RUN mkdir -p $SRC
20 |
21 | ADD . $SRC/
22 |
23 | ENTRYPOINT /bin/bash $SRC/docker/worker/startup-worker.sh
--------------------------------------------------------------------------------
/docker/worker/startup-worker.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | rq worker $EXPERIMENT --url redis://$REDIS_HOST:6379
17 |
--------------------------------------------------------------------------------
/docs/404.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 |
18 |
19 |
20 |
404
21 |
22 |
Page not found :(
23 |
24 |
--------------------------------------------------------------------------------
/docs/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 | gem 'github-pages', group: :jekyll_plugins
3 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Readme
2 |
3 | Use the following instructions to make documentation changes locally.
4 |
5 | ## Prerequisites
6 | ```bash
7 | sudo apt install ruby bundler
8 | bundle install --path vendor/bundle
9 | ```
10 |
11 | ## Serving locally
12 | ```bash
13 | bundle exec jekyll serve
14 | ```
15 |
16 | or from the project root:
17 |
18 | ```bash
19 | make docs-serve
20 | ```
21 |
22 | ## Theme documentation
23 | We are using the [just the docs](https://just-the-docs.github.io/just-the-docs/)
24 | theme.
25 |
--------------------------------------------------------------------------------
/docs/_includes/head_custom.html:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/docs/developing-fuzzbench/developing_fuzzbench.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: Developing FuzzBench
4 | has_children: true
5 | nav_order: 3
6 | permalink: /developing-fuzzbench/
7 | ---
8 |
9 | # Developing FuzzBench
10 |
11 | This section walks you through making code changes to FuzzBench that aren't
12 | fuzzer integrations. They assume you have already read the docs on
13 | [Getting started]({{site.baseurl }}/getting-started/).
14 |
--------------------------------------------------------------------------------
/docs/getting-started/getting_started.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: Getting started
4 | has_children: true
5 | nav_order: 2
6 | permalink: /getting-started/
7 | ---
8 |
9 | # Getting started
10 |
11 | These pages walk you through the process of setting up FuzzBench locally for
12 | integrating a fuzzer to use in the FuzzBench service. Other users who wish to
13 | develop FuzzBench should also start here as this explains the prequisites for
14 | develolpment and testing.
15 |
--------------------------------------------------------------------------------
/docs/images/FuzzBench-architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/docs/images/FuzzBench-architecture.png
--------------------------------------------------------------------------------
/docs/images/FuzzBench-service.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/docs/images/FuzzBench-service.png
--------------------------------------------------------------------------------
/docs/internal-documentation/internal_documentation.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: Internal Documentation
4 | has_children: true
5 | nav_order: 8
6 | permalink: /internal-documentation/
7 | ---
8 |
9 | # Internal documentation
10 |
11 | This section contains internal documentation that is meant for FuzzBench
12 | maintainers. It is not useful for end users of FuzzBench.
13 |
--------------------------------------------------------------------------------
/docs/reference/reference.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: Reference
4 | has_children: true
5 | nav_order: 6
6 | permalink: /reference/
7 | ---
8 |
9 | # Reference
10 |
--------------------------------------------------------------------------------
/docs/reference/useful_links.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: Useful links
4 | nav_order: 7
5 | permalink: /reference/useful-links/
6 | parent: Reference
7 | ---
8 |
9 | # Useful links
10 |
11 | - TOC
12 | {:toc}
13 | ---
14 |
15 | ## Reports
16 |
17 | All FuzzBench reports are available on our website `fuzzbench.com`. You can
18 | access them [here](https://www.fuzzbench.com/reports/index.html).
19 |
20 | ## Blog posts
21 |
22 | Announcement blog post:
23 |
24 | [https://security.googleblog.com/2020/03/fuzzbench-fuzzer-benchmarking-as-service.html](https://security.googleblog.com/2020/03/fuzzbench-fuzzer-benchmarking-as-service.html)
25 |
26 | [https://opensource.googleblog.com/2020/03/fuzzbench-fuzzer-benchmarking-as-service.html](https://opensource.googleblog.com/2020/03/fuzzbench-fuzzer-benchmarking-as-service.html)
27 |
--------------------------------------------------------------------------------
/docs/running-a-cloud-experiment/running_a_cloud_experiment.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: Running an experiment on your Cloud project
4 | has_children: true
5 | nav_order: 4
6 | permalink: /running-a-cloud-experiment/
7 | ---
8 |
9 | # Running your own experiment
10 |
11 | This section walks you through running a fuzzer benchmarking experiment using
12 | the FuzzBench platform.
13 |
--------------------------------------------------------------------------------
/experiment/measurer/datatypes.py:
--------------------------------------------------------------------------------
1 | # Copyright 2024 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Module for common data types shared under the measurer module."""
15 | import collections
16 |
17 | SnapshotMeasureRequest = collections.namedtuple(
18 | 'SnapshotMeasureRequest', ['fuzzer', 'benchmark', 'trial_id', 'cycle'])
19 |
20 | RetryRequest = collections.namedtuple(
21 | 'RetryRequest', ['fuzzer', 'benchmark', 'trial_id', 'cycle'])
22 |
--------------------------------------------------------------------------------
/experiment/measurer/test_data/afl-corpus.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/afl-corpus.tgz
--------------------------------------------------------------------------------
/experiment/measurer/test_data/cov_summary_defective.json:
--------------------------------------------------------------------------------
1 | {"defective_info":{"count":2,"covered":2,"percent":100}}
--------------------------------------------------------------------------------
/experiment/measurer/test_data/covered-pcs.txt:
--------------------------------------------------------------------------------
1 | 0x425221
2 | 0x4252a6
3 | 0x42531d
4 | 0x42537d
5 | 0x4253a8
6 | 0x4253f4
7 | 0x42542d
8 | 0x42545c
9 | 0x4254ac
--------------------------------------------------------------------------------
/experiment/measurer/test_data/libfuzzer-corpus.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/libfuzzer-corpus.tgz
--------------------------------------------------------------------------------
/experiment/measurer/test_data/llvm_tools/llvm-cov:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/llvm_tools/llvm-cov
--------------------------------------------------------------------------------
/experiment/measurer/test_data/llvm_tools/llvm-profdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/llvm_tools/llvm-profdata
--------------------------------------------------------------------------------
/experiment/measurer/test_data/llvm_tools/llvm-symbolizer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/llvm_tools/llvm-symbolizer
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_measure_snapshot_coverage/corpus-archive-0001.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_measure_snapshot_coverage/corpus-archive-0001.tar.gz
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_measure_snapshot_coverage/freetype2_ftfuzzer-coverage:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_measure_snapshot_coverage/freetype2_ftfuzzer-coverage
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_coverage/corpus/0:
--------------------------------------------------------------------------------
1 | 0
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_coverage/crash-corpus/0:
--------------------------------------------------------------------------------
1 | 0
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_coverage/crash-corpus/crash1:
--------------------------------------------------------------------------------
1 | a
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_coverage/crash-corpus/crash2:
--------------------------------------------------------------------------------
1 | a
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_coverage/fuzz-target:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_run_coverage/fuzz-target
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_coverage/fuzz-target-clang-cov:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_run_coverage/fuzz-target-clang-cov
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_coverage/fuzz_target.cc:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | // Compile using:
16 | // clang -fsanitize-coverage=trace-pc-guard -O1 \
17 | // third_party/StandaloneFuzzTargetMain.c fuzz_target.cc -o fuzz-target
18 |
19 | #include
20 | #include
21 | #include
22 |
23 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
24 | if (size < 0)
25 | return 0;
26 |
27 | if (data[0] == 'a')
28 | abort();
29 | if (size < 4)
30 | return 0;
31 | if (data[0] == 't' && data[1] == 'i' && data[2] == 'm' && data[3] == 'e')
32 | while (true) ;
33 |
34 | return 0;
35 | }
36 |
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_coverage/timeout-corpus/timeout:
--------------------------------------------------------------------------------
1 | time
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_crashes/crash-corpus/0:
--------------------------------------------------------------------------------
1 | 0
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_crashes/crash-corpus/crash:
--------------------------------------------------------------------------------
1 | a
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_crashes/fuzz-target:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_run_crashes/fuzz-target
--------------------------------------------------------------------------------
/experiment/measurer/test_data/test_run_crashes/fuzz_target.c:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | // Compile using:
16 | // clang -fsanitize=fuzzer -fsanitize=address,undefined -O1 -gline-tables-only \
17 | // fuzz_target.c -o fuzz-target
18 |
19 | #include
20 | #include
21 |
22 | int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
23 | if (size < 0)
24 | return 0;
25 |
26 | if (data[0] == 'a')
27 | abort();
28 | if (size < 4)
29 | return 0;
30 | if (data[0] == 't' && data[1] == 'i' && data[2] == 'm' && data[3] == 'e')
31 | while (1) ;
32 |
33 | return 0;
34 | }
35 |
--------------------------------------------------------------------------------
/experiment/test_data/local-experiment-config.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 |
16 | experiment: test-experiment
17 | trials: 4
18 | max_total_time: 86400
19 | docker_registry: gcr.io/fuzzbench
20 | experiment_filestore: /tmp/experiment-data
21 | report_filestore: /tmp/web-reports
22 | local_experiment: true
23 | benchmarks: "benchmark-1,benchmark-2"
24 | git_hash: "git-hash"
25 | micro_experiment: false
26 |
--------------------------------------------------------------------------------
/experiment/test_data/test_runner/MultipleConstraintsOnSmallInputTest:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/test_data/test_runner/MultipleConstraintsOnSmallInputTest
--------------------------------------------------------------------------------
/experiment/test_data/test_runner/fuzz-target_seed_corpus.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/test_data/test_runner/fuzz-target_seed_corpus.zip
--------------------------------------------------------------------------------
/fuzzbench/local-experiment-config.yaml:
--------------------------------------------------------------------------------
1 | benchmarks:
2 | - freetype2-2017
3 | - bloaty_fuzz_target
4 | fuzzers:
5 | - afl
6 | - libfuzzer
7 |
--------------------------------------------------------------------------------
/fuzzbench/test_e2e/end-to-end-test-config.yaml:
--------------------------------------------------------------------------------
1 | benchmarks:
2 | - bloaty_fuzz_target
3 | fuzzers:
4 | - libfuzzer
5 |
--------------------------------------------------------------------------------
/fuzzbench/worker.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Self-defined worker module."""
15 | import time
16 |
17 | import redis
18 | import rq
19 |
20 |
21 | def main():
22 | """Sets up Redis connection and starts the worker."""
23 | redis_connection = redis.Redis(host='queue-server')
24 | with rq.Connection(redis_connection):
25 | queue = rq.Queue('build_n_run_queue')
26 | worker = rq.Worker([queue])
27 |
28 | while queue.count + queue.deferred_job_registry.count > 0:
29 | worker.work(burst=True)
30 | time.sleep(5)
31 |
32 |
33 | if __name__ == '__main__':
34 | main()
35 |
--------------------------------------------------------------------------------
/fuzzers/afl/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/afl_2_52_b/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/afl_qemu/fuzzer.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Integration code for AFL qemu fuzzer."""
15 |
16 | # As aflplusplus has the build for qemu already in there we include this.
17 | from fuzzers.aflplusplus import fuzzer as aflplusplus_fuzzer
18 |
19 |
20 | def build():
21 | """Build benchmark."""
22 | aflplusplus_fuzzer.build('qemu')
23 |
24 |
25 | def fuzz(input_corpus, output_corpus, target_binary):
26 | """Run fuzzer."""
27 | # Necessary fuzzer options.
28 | flags = ['-Q']
29 | aflplusplus_fuzzer.fuzz(input_corpus,
30 | output_corpus,
31 | target_binary,
32 | flags=flags)
33 |
--------------------------------------------------------------------------------
/fuzzers/afl_qemu/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/afl_random_favored/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/afl_virginmap/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/aflcc/aflcc_mock.c:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #include
16 | #include
17 |
18 | // these are defined in the LLVM passes,
19 | // but need to be mocked for persistent mode.
20 | void __afl_manual_init(void) { printf("manual_init\n"); }
21 | int __afl_persistent_loop(unsigned int max_cnt) { printf("peristent loop\n"); return 0; }
22 | uint32_t __afl_get_area_size(void) { printf("get area size\n"); return 0; }
23 | uint32_t __afl_get_bbarea_size(void) { printf("bb area size\n"); return 0; }
--------------------------------------------------------------------------------
/fuzzers/aflcc/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt-get install -y zlib1g-dev \
18 | libarchive-dev \
19 | libglib2.0-dev \
20 | libpsl-dev \
21 | libbsd-dev
22 |
23 |
--------------------------------------------------------------------------------
/fuzzers/aflfast/fuzzer.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Integration code for AFLFast fuzzer."""
15 |
16 | from fuzzers.afl import fuzzer as afl_fuzzer
17 |
18 |
19 | def build():
20 | """Build benchmark."""
21 | afl_fuzzer.build()
22 |
23 |
24 | def fuzz(input_corpus, output_corpus, target_binary):
25 | """Run fuzzer."""
26 | afl_fuzzer.prepare_fuzz_environment(input_corpus)
27 |
28 | # Write AFL's output to /dev/null to avoid filling up disk by writing too
29 | # much to log file. This is a problem in general with AFLFast but
30 | # particularly with the lcms benchmark.
31 | afl_fuzzer.run_afl_fuzz(input_corpus,
32 | output_corpus,
33 | target_binary,
34 | hide_output=True)
35 |
--------------------------------------------------------------------------------
/fuzzers/aflfast/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus
2 |
3 | AFL++ fuzzer instance that has the following config active for all benchmarks:
4 | - PCGUARD instrumentation
5 | - cmplog feature
6 | - dict2file feature
7 | - "fast" power schedule
8 | - persistent mode + shared memory test cases
9 |
10 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/)
11 |
12 | [builder.Dockerfile](builder.Dockerfile)
13 | [fuzzer.py](fuzzer.py)
14 | [runner.Dockerfile](runner.Dockerfile)
15 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 | # RUN apt-get update && apt-get upgrade && apt install -y unzip git gdb joe
25 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_frida/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus_qemu
2 |
3 | AFL++ fuzzer instance for binary-only fuzzing with frida_mode.
4 | The following config active for all benchmarks:
5 | - qemu_mode with:
6 | - entrypoint set to LLVMFuzzerTestOneInput
7 | - persisten mode set to LLVMFuzzerTestOneInput
8 | - shared memory testcases
9 | - cmplog
10 |
11 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/)
12 |
13 | [builder.Dockerfile](builder.Dockerfile)
14 | [fuzzer.py](fuzzer.py)
15 | [runner.Dockerfile](runner.Dockerfile)
16 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_frida/get_frida_entry.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | test -z "$1" -o -z "$2" -o '!' -e "$1" && exit 0
17 |
18 | file "$1" | grep -q executable && {
19 | nm "$1" | grep -i "T $2" | awk '{print"0x"$1}'
20 | exit 0
21 | }
22 |
23 | nm "$1" | grep -i "T $2" | '{print$1}' | tr a-f A-F | \
24 | xargs echo "ibase=16;obase=10;555555554000 + " | bc | tr A-F a-f
25 | exit 0
26 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_frida/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt update -y && apt-get upgrade -y && \
18 | apt-get install -y python3-pyelftools bc
19 |
20 | # This makes interactive docker run painless:
21 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
22 | #ENV AFL_MAP_SIZE=2621440
23 | ENV PATH="$PATH:/out"
24 | ENV AFL_SKIP_CPUFREQ=1
25 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
26 | ENV AFL_TESTCACHE_SIZE=2
27 |
28 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_qemu/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus_qemu
2 |
3 | AFL++ fuzzer instance for binary-only fuzzing with qemu_mode.
4 | The following config active for all benchmarks:
5 | - qemu_mode with:
6 | - entrypoint set to afl_qemu_driver_stdin_input
7 | - persisten mode set to afl_qemu_driver_stdin_input
8 | - cmplog
9 |
10 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/)
11 |
12 | [builder.Dockerfile](builder.Dockerfile)
13 | [fuzzer.py](fuzzer.py)
14 | [runner.Dockerfile](runner.Dockerfile)
15 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_qemu/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_parallel/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus UM (parallel)
2 |
3 | Run aflplusplus over mutated code with parallel.
4 |
5 | NOTE: This only works with C or C++ benchmarks.
6 |
7 | [builder.Dockerfile](builder.Dockerfile)
8 | [fuzzer.py](fuzzer.py)
9 | [runner.Dockerfile](runner.Dockerfile)
10 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_parallel/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_prioritize/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus UM (prioritize)
2 |
3 | Run aflplusplus over mutated code with UM prioritization
4 |
5 | NOTE: This only works with C or C++ benchmarks.
6 |
7 | [builder.Dockerfile](builder.Dockerfile)
8 | [fuzzer.py](fuzzer.py)
9 | [runner.Dockerfile](runner.Dockerfile)
10 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_prioritize/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_prioritize_75/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus UM (prioritize)
2 |
3 | Run aflplusplus over mutated code with UM prioritization
4 |
5 | NOTE: This only works with C or C++ benchmarks.
6 |
7 | [builder.Dockerfile](builder.Dockerfile)
8 | [fuzzer.py](fuzzer.py)
9 | [runner.Dockerfile](runner.Dockerfile)
10 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_prioritize_75/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_random/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus UM (random)
2 |
3 | Run aflplusplus over mutated code without UM prioritization. Randomly sample
4 | list of generated mutants.
5 |
6 | NOTE: This only works with C or C++ benchmarks.
7 |
8 | [builder.Dockerfile](builder.Dockerfile)
9 | [fuzzer.py](fuzzer.py)
10 | [runner.Dockerfile](runner.Dockerfile)
11 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_random/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_random_75/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus UM (random)
2 |
3 | Run aflplusplus over mutated code without UM prioritization. Randomly sample
4 | list of generated mutants.
5 |
6 | NOTE: This only works with C or C++ benchmarks.
7 |
8 | [builder.Dockerfile](builder.Dockerfile)
9 | [fuzzer.py](fuzzer.py)
10 | [runner.Dockerfile](runner.Dockerfile)
11 |
--------------------------------------------------------------------------------
/fuzzers/aflplusplus_um_random_75/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflpp_random_default/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflpp_random_no_favs/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflpp_random_wrs/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflpp_random_wrs_rf/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflpp_random_wrs_rf_rp/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflpp_random_wrs_rp/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/aflsmart/README.md:
--------------------------------------------------------------------------------
1 | # Supported benchmarks
2 |
3 | [AFLSmart](https://github.com/aflsmart/aflsmart) is a structure-aware greybox-fuzzer and it is designed to work best for programs taking chunk-based file formats (e.g., JPEG, PNG and many others) as inputs. To fully enable its structure-aware mode, AFLSmart requires input models (e.g., grammar). So if you evaluate AFLSmart on FuzzBench, please focus on the results for the following benchmarks. We keep trying to include more input models so that more benchmarks will be supported.
4 |
5 | 1. libpng-1.2.56
6 |
7 | 2. libjpeg-turbo-07-2017
8 |
9 | 3. libpcap_fuzz_both
10 |
11 | 4. freetype2-2017
12 |
13 | 5. vorbis-2017-12-11
14 |
15 | 6. bloaty_fuzz_target
16 |
17 | Since the experiment summary diagram of the default FuzzBench report is automatically generated based on the results of all benchmarks, many of them have not been supported by AFLSmart, the ranking of AFLSmart in that diagram may not be correct.
18 |
19 |
--------------------------------------------------------------------------------
/fuzzers/aflsmart/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt-get update -y && \
18 | DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
19 | apt-get install -y \
20 | mono-complete \
21 | tzdata
22 |
--------------------------------------------------------------------------------
/fuzzers/aflsmart_plusplus/README.md:
--------------------------------------------------------------------------------
1 | [AFLSmart++](https://github.com/thuanpv/aflsmart) is an extension of AFLSmart. Like AFLSmart, it is a structure-aware greybox-fuzzer and it is designed to work best for programs taking chunk-based file formats (e.g., JPEG, PNG and many others) as inputs.
2 |
3 |
--------------------------------------------------------------------------------
/fuzzers/aflsmart_plusplus/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt-get update -y && \
18 | DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
19 | apt-get install -y \
20 | mono-complete \
21 | tzdata
22 |
--------------------------------------------------------------------------------
/fuzzers/centipede/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2022 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/centipede_function_filter/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2022 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/oss-fuzz-base/base-clang@sha256:30706816922bf9c141b15ff4a5a44af8c0ec5700d4b46e0572029c15e495d45b AS base-clang
16 | FROM gcr.io/fuzzbench/base-image
17 |
18 | RUN apt-get update && apt-get install -y wget && \
19 | wget https://storage.googleapis.com/oss-fuzz-introspector-testing/focus_map.yaml && \
20 | apt-get remove --purge -y wget
21 |
22 | COPY --from=base-clang /usr/local/bin/llvm-symbolizer /usr/local/bin/
--------------------------------------------------------------------------------
/fuzzers/coverage/fuzzer.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Integration code for clang source-based coverage builds."""
15 |
16 | import os
17 |
18 | from fuzzers import utils
19 |
20 |
21 | def build():
22 | """Build benchmark."""
23 | cflags = [
24 | '-fprofile-instr-generate', '-fcoverage-mapping', '-gline-tables-only'
25 | ]
26 | utils.append_flags('CFLAGS', cflags)
27 | utils.append_flags('CXXFLAGS', cflags)
28 |
29 | os.environ['CC'] = 'clang'
30 | os.environ['CXX'] = 'clang++'
31 | os.environ['FUZZER_LIB'] = '/usr/lib/libFuzzer.a'
32 |
33 | utils.build_benchmark()
34 |
--------------------------------------------------------------------------------
/fuzzers/darwin/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/eclipser_aflplusplus/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus + eclipser 2.0
2 |
3 | AFL++ fuzzer instance that uses Eclipser 2.0
4 | - PCGUARD instrumentation
5 | - dict2file feature
6 | - "fast" power schedule
7 | - persistent mode + shared memory test cases
8 |
9 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/)
10 | Repository: [https://github.com/SoftSec-KAIST/Eclipser](https://github.com/SoftSec-KAIST/Eclipser)
11 |
12 | [builder.Dockerfile](builder.Dockerfile)
13 | [fuzzer.py](fuzzer.py)
14 | [runner.Dockerfile](runner.Dockerfile)
15 |
--------------------------------------------------------------------------------
/fuzzers/ecofuzz/fuzzer.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Integration code for EcoFuzz fuzzer."""
15 |
16 | from fuzzers.afl import fuzzer as afl_fuzzer
17 |
18 |
19 | def build():
20 | """Build benchmark."""
21 | afl_fuzzer.build()
22 |
23 |
24 | def fuzz(input_corpus, output_corpus, target_binary):
25 | """Run fuzzer."""
26 | afl_fuzzer.prepare_fuzz_environment(input_corpus)
27 |
28 | # Write AFL's output to /dev/null to avoid filling up disk by writing too
29 | # much to log file. This is a problem in general with AFLFast but
30 | # particularly with the lcms benchmark.
31 | afl_fuzzer.run_afl_fuzz(input_corpus,
32 | output_corpus,
33 | target_binary,
34 | hide_output=True)
35 |
--------------------------------------------------------------------------------
/fuzzers/ecofuzz/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/fafuzz/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/fairfuzz/fuzzer.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Integration code for FairFuzz fuzzer."""
15 |
16 | from fuzzers.afl import fuzzer as afl_fuzzer
17 |
18 |
19 | def build():
20 | """Build benchmark."""
21 | afl_fuzzer.build()
22 |
23 |
24 | def fuzz(input_corpus, output_corpus, target_binary):
25 | """Run fuzzer."""
26 | afl_fuzzer.fuzz(input_corpus, output_corpus, target_binary)
27 |
--------------------------------------------------------------------------------
/fuzzers/fairfuzz/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/fuzzolic_aflplusplus_fuzzy/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus + fuzzolic fuzzy solver
2 |
3 | Simple AFL++ fuzzer instance together with fuzzolic fuzzy solver
4 |
5 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/)
6 | Repository: [https://github.com/season-lab/fuzzolic](https://github.com/season-lab/fuzzolic)
7 |
8 | [builder.Dockerfile](builder.Dockerfile)
9 | [fuzzer.py](fuzzer.py)
10 | [runner.Dockerfile](runner.Dockerfile)
11 |
--------------------------------------------------------------------------------
/fuzzers/fuzzolic_aflplusplus_z3/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus + fuzzolic z3
2 |
3 | Simple AFL++ fuzzer instance together with fuzzolic z3
4 |
5 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/)
6 | Repository: [https://github.com/season-lab/fuzzolic](https://github.com/season-lab/fuzzolic)
7 |
8 | [builder.Dockerfile](builder.Dockerfile)
9 | [fuzzer.py](fuzzer.py)
10 | [runner.Dockerfile](runner.Dockerfile)
11 |
--------------------------------------------------------------------------------
/fuzzers/glibfuzzer/builder.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | ARG parent_image
16 | FROM $parent_image
17 |
18 | #RUN git clone https://github.com/llvm/llvm-project.git /llvm-project && \
19 | #RUN git clone https://github.com/gtt1995/libfuzzer-adaptive-group.git&& \
20 | RUN git clone https://github.com/gtt1995/libfuzzer-cmab-latest.git && \
21 | cd libfuzzer-cmab-latest && \
22 | # git checkout 5cda4dc7b4d28fcd11307d4234c513ff779a1c6f && \
23 | # cd compiler-rt/lib/fuzzer && \
24 | (for f in *.cpp; do \
25 | clang++ -stdlib=libc++ -fPIC -O2 -std=c++11 $f -c & \
26 | done && wait) && \
27 | ar r /usr/lib/glibFuzzer.a *.o
28 |
--------------------------------------------------------------------------------
/fuzzers/glibfuzzer/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/gramatron/fuzzer.yaml:
--------------------------------------------------------------------------------
1 | allowed_benchmarks:
2 | - quickjs_eval-2020-01-05
3 | - php_php-fuzz-execute
4 | - mruby_mruby_fuzzer_8c8bbd
5 |
--------------------------------------------------------------------------------
/fuzzers/gramatron/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/grimoire/fuzzer.yaml:
--------------------------------------------------------------------------------
1 | allowed_benchmarks:
2 | - quickjs_eval-2020-01-05
3 | - php_php-fuzz-execute
4 | - mruby_mruby_fuzzer_8c8bbd
5 |
--------------------------------------------------------------------------------
/fuzzers/grimoire/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/hastefuzz/description.md:
--------------------------------------------------------------------------------
1 | # hastefuzz
2 |
3 | AFL++ fuzzer instance that has the following config active for all benchmarks:
4 | - PCGUARD instrumentation
5 | - cmplog feature
6 | - dict2file feature
7 | - "fast" power schedule
8 | - persistent mode + shared memory test cases
9 | - haste mode
10 |
11 | Repository: [https://github.com/AAArdu/hastefuzz](https://github.com/AAArdu/hastefuzz)
12 |
13 | [builder.Dockerfile](builder.Dockerfile)
14 | [fuzzer.py](fuzzer.py)
15 | [runner.Dockerfile](runner.Dockerfile)
16 |
--------------------------------------------------------------------------------
/fuzzers/hastefuzz/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # This makes interactive docker runs painless:
18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
19 | #ENV AFL_MAP_SIZE=2621440
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_SKIP_CPUFREQ=1
22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
23 | ENV AFL_TESTCACHE_SIZE=2
24 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # honggfuzz requires libfd and libunwid
18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev
19 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_qemu/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # honggfuzz requires libfd and libunwid
18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev
19 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_parallel/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus UM (parallel)
2 |
3 | Run aflplusplus over mutated code in parallel.
4 |
5 | NOTE: This only works with C or C++ benchmarks.
6 |
7 | [builder.Dockerfile](builder.Dockerfile)
8 | [fuzzer.py](fuzzer.py)
9 | [runner.Dockerfile](runner.Dockerfile)
10 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_parallel/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # honggfuzz requires libfd and libunwid
18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev
19 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_prioritize/description.md:
--------------------------------------------------------------------------------
1 | # honggfuzz UM (prioritize)
2 |
3 | Run honggfuzz over mutated code with UM prioritization
4 |
5 | NOTE: This only works with C or C++ benchmarks.
6 |
7 | [builder.Dockerfile](builder.Dockerfile)
8 | [fuzzer.py](fuzzer.py)
9 | [runner.Dockerfile](runner.Dockerfile)
10 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_prioritize/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # honggfuzz requires libfd and libunwid
18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev
19 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_prioritize_75/description.md:
--------------------------------------------------------------------------------
1 | # honggfuzz UM (prioritize)
2 |
3 | Run honggfuzz over mutated code with UM prioritization
4 |
5 | NOTE: This only works with C or C++ benchmarks.
6 |
7 | [builder.Dockerfile](builder.Dockerfile)
8 | [fuzzer.py](fuzzer.py)
9 | [runner.Dockerfile](runner.Dockerfile)
10 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_prioritize_75/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # honggfuzz requires libfd and libunwid
18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev
19 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_random/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus UM (random)
2 |
3 | Run aflplusplus over mutated code without UM prioritization. Randomly sample
4 | list of generated mutants.
5 |
6 | NOTE: This only works with C or C++ benchmarks.
7 |
8 | [builder.Dockerfile](builder.Dockerfile)
9 | [fuzzer.py](fuzzer.py)
10 | [runner.Dockerfile](runner.Dockerfile)
11 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_random/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # honggfuzz requires libfd and libunwid
18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev
19 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_random_75/description.md:
--------------------------------------------------------------------------------
1 | # aflplusplus UM (random)
2 |
3 | Run aflplusplus over mutated code without UM prioritization. Randomly sample
4 | list of generated mutants.
5 |
6 | NOTE: This only works with C or C++ benchmarks.
7 |
8 | [builder.Dockerfile](builder.Dockerfile)
9 | [fuzzer.py](fuzzer.py)
10 | [runner.Dockerfile](runner.Dockerfile)
11 |
--------------------------------------------------------------------------------
/fuzzers/honggfuzz_um_random_75/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | # honggfuzz requires libfd and libunwid
18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev
19 |
--------------------------------------------------------------------------------
/fuzzers/klee/klee_mock.c:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #include
16 | void klee_make_symbolic(void *addr, size_t len, char const* name) {
17 | // do nothing
18 | abort();
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/fuzzers/klee/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt-get update -y && \
18 | apt-get install -y \
19 | google-perftools \
20 | llvm-6.0 llvm-6.0-dev llvm-6.0-tools
21 |
22 | RUN apt-get install -y clang-6.0 vim less
23 | RUN pip3 install psutil==5.7.2
24 |
--------------------------------------------------------------------------------
/fuzzers/lafintel/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/learnperffuzz/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
--------------------------------------------------------------------------------
/fuzzers/libafl/description.md:
--------------------------------------------------------------------------------
1 | # libafl
2 |
3 | libafl fuzzer instance
4 | - cmplog feature
5 | - persistent mode
6 |
7 | Repository: [https://github.com/AFLplusplus/libafl/](https://github.com/AFLplusplus/libafl/)
8 |
9 | [builder.Dockerfile](builder.Dockerfile)
10 | [fuzzer.py](fuzzer.py)
11 | [runner.Dockerfile](runner.Dockerfile)
12 |
--------------------------------------------------------------------------------
/fuzzers/libafl/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt install libjemalloc2
18 |
19 | # This makes interactive docker runs painless:
20 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
21 | #ENV AFL_MAP_SIZE=2621440
22 | ENV PATH="$PATH:/out"
23 | ENV AFL_SKIP_CPUFREQ=1
24 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
25 | ENV AFL_TESTCACHE_SIZE=2
26 |
--------------------------------------------------------------------------------
/fuzzers/libafl_libfuzzer/description.md:
--------------------------------------------------------------------------------
1 | # libafl_libfuzzer
2 |
3 | `libafl_libfuzzer` is a libfuzzer shim which attempts to replicate as many of the features of libfuzzer as possible
4 | without utilising any customisation from the compiler, making it compatible with all libfuzzer targets while also using
5 | all the advanced features of libafl.
6 |
7 | Repository: [LibAFL/libfuzzer](https://github.com/AFLplusplus/LibAFL/tree/libfuzzer)
8 |
9 | [builder.Dockerfile](builder.Dockerfile)
10 | [fuzzer.py](fuzzer.py)
11 | [runner.Dockerfile](runner.Dockerfile)
12 |
--------------------------------------------------------------------------------
/fuzzers/libafl_libfuzzer/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/libfuzzer/builder.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | ARG parent_image
16 | FROM $parent_image
17 |
18 | RUN git clone https://github.com/llvm/llvm-project.git /llvm-project && \
19 | cd /llvm-project && \
20 | git checkout 5cda4dc7b4d28fcd11307d4234c513ff779a1c6f && \
21 | cd compiler-rt/lib/fuzzer && \
22 | (for f in *.cpp; do \
23 | clang++ -stdlib=libc++ -fPIC -O2 -std=c++11 $f -c & \
24 | done && wait) && \
25 | ar r libFuzzer.a *.o && \
26 | cp libFuzzer.a /usr/lib
27 |
--------------------------------------------------------------------------------
/fuzzers/libfuzzer/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/manul/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 | RUN python3 -m pip install psutil
17 |
--------------------------------------------------------------------------------
/fuzzers/mopt/fuzzer.py:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | """Integration code for MOpt fuzzer."""
15 |
16 | from fuzzers.afl import fuzzer as afl_fuzzer
17 |
18 |
19 | def build():
20 | """Build benchmark."""
21 | afl_fuzzer.build()
22 |
23 |
24 | def fuzz(input_corpus, output_corpus, target_binary):
25 | """Run fuzzer."""
26 | afl_fuzzer.prepare_fuzz_environment(input_corpus)
27 |
28 | afl_fuzzer.run_afl_fuzz(
29 | input_corpus,
30 | output_corpus,
31 | target_binary,
32 | additional_flags=[
33 | # Enable Mopt mutator with pacemaker fuzzing mode at first. This
34 | # is also recommended in a short-time scale evaluation.
35 | '-L',
36 | '0',
37 | ])
38 |
--------------------------------------------------------------------------------
/fuzzers/mopt/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/nautilus/fuzzer.yaml:
--------------------------------------------------------------------------------
1 | allowed_benchmarks:
2 | - quickjs_eval-2020-01-05
3 | - php_php-fuzz-execute
4 | - mruby_mruby_fuzzer_8c8bbd
5 |
--------------------------------------------------------------------------------
/fuzzers/nautilus/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt update && apt -y install libexpat1-dev zlib1g-dev
18 |
19 | # This makes interactive docker runs painless:
20 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
21 | #ENV AFL_MAP_SIZE=2621440
22 | ENV PATH="$PATH:/out"
23 | ENV AFL_SKIP_CPUFREQ=1
24 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
25 | ENV AFL_TESTCACHE_SIZE=2
26 |
--------------------------------------------------------------------------------
/fuzzers/pythia_bb/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/pythia_effect_bb/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/symcc_afl/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
18 |
--------------------------------------------------------------------------------
/fuzzers/symcc_afl_single/fuzzer.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | ''' Uses the SymCC-AFL hybrid from SymCC, although this only
15 | launches a single AFL instance rather than two. '''
16 |
17 | from fuzzers.symcc_afl import fuzzer as symcc_afl_fuzzer
18 |
19 |
20 | def build():
21 | """ Build an AFL version and SymCC version of the benchmark """
22 | symcc_afl_fuzzer.build()
23 |
24 |
25 | def fuzz(input_corpus, output_corpus, target_binary):
26 | """ Launch a SymCC with a single AFL instance. """
27 | symcc_afl_fuzzer.fuzz(input_corpus, output_corpus, target_binary, True)
28 |
--------------------------------------------------------------------------------
/fuzzers/symcc_afl_single/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
18 |
--------------------------------------------------------------------------------
/fuzzers/symcc_aflplusplus/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
18 |
--------------------------------------------------------------------------------
/fuzzers/symcc_aflplusplus_single/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
18 |
--------------------------------------------------------------------------------
/fuzzers/symsan/bz2.abilist:
--------------------------------------------------------------------------------
1 | fun:BZ2_blockSort=uninstrumented
2 | fun:BZ2_bsInitWrite=uninstrumented
3 | fun:BZ2_bzBuffToBuffCompress=uninstrumented
4 | fun:BZ2_bzBuffToBuffDecompress=uninstrumented
5 | fun:BZ2_bzCompress=uninstrumented
6 | fun:BZ2_bzCompressEnd=uninstrumented
7 | fun:BZ2_bzCompressInit=uninstrumented
8 | fun:BZ2_bzDecompress=uninstrumented
9 | fun:BZ2_bzDecompressEnd=uninstrumented
10 | fun:BZ2_bzDecompressInit=uninstrumented
11 | fun:BZ2_bzRead=uninstrumented
12 | fun:BZ2_bzReadClose=uninstrumented
13 | fun:BZ2_bzReadGetUnused=uninstrumented
14 | fun:BZ2_bzReadOpen=uninstrumented
15 | fun:BZ2_bzWrite=uninstrumented
16 | fun:BZ2_bzWriteClose=uninstrumented
17 | fun:BZ2_bzWriteClose64=uninstrumented
18 | fun:BZ2_bzWriteOpen=uninstrumented
19 | fun:BZ2_bz__AssertH__fail=uninstrumented
20 | fun:BZ2_bzclose=uninstrumented
21 | fun:BZ2_bzdopen=uninstrumented
22 | fun:BZ2_bzerror=uninstrumented
23 | fun:BZ2_bzflush=uninstrumented
24 | fun:BZ2_bzlibVersion=uninstrumented
25 | fun:BZ2_bzopen=uninstrumented
26 | fun:BZ2_bzread=uninstrumented
27 | fun:BZ2_bzwrite=uninstrumented
28 | fun:BZ2_compressBlock=uninstrumented
29 | fun:BZ2_decompress=uninstrumented
30 | fun:BZ2_hbAssignCodes=uninstrumented
31 | fun:BZ2_hbCreateDecodeTables=uninstrumented
32 | fun:BZ2_hbMakeCodeLengths=uninstrumented
33 | fun:BZ2_indexIntoF=uninstrumented
34 |
--------------------------------------------------------------------------------
/fuzzers/symsan/fres.sh:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #!/bin/bash
15 | RUST_LOG=info /out/fastgen --sync_afl -i - -o /out/corpus -t $1 -- $2 @@
16 |
--------------------------------------------------------------------------------
/fuzzers/symsan/fuz.sh:
--------------------------------------------------------------------------------
1 | # Licensed under the Apache License, Version 2.0 (the "License");
2 | # you may not use this file except in compliance with the License.
3 | # You may obtain a copy of the License at
4 | #
5 | # http://www.apache.org/licenses/LICENSE-2.0
6 | #
7 | # Unless required by applicable law or agreed to in writing, software
8 | # distributed under the License is distributed on an "AS IS" BASIS,
9 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 | # See the License for the specific language governing permissions and
11 | # limitations under the License.
12 | #!/bin/bash
13 | RUST_LOG=info /out/fastgen --sync_afl -i /out/seeds -o /out/corpus -t $1 -- $2 @@
14 |
--------------------------------------------------------------------------------
/fuzzers/token_level/fuzzer.yaml:
--------------------------------------------------------------------------------
1 | allowed_benchmarks:
2 | - quickjs_eval-2020-01-05
3 | - php_php-fuzz-execute
4 | - mruby_mruby_fuzzer_8c8bbd
5 |
--------------------------------------------------------------------------------
/fuzzers/token_level/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt update && apt -y install libexpat1-dev zlib1g-dev
18 |
19 | # This makes interactive docker runs painless:
20 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out"
21 | #ENV AFL_MAP_SIZE=2621440
22 | ENV PATH="$PATH:/out"
23 | ENV AFL_SKIP_CPUFREQ=1
24 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
25 | ENV AFL_TESTCACHE_SIZE=2
26 |
--------------------------------------------------------------------------------
/fuzzers/tortoisefuzz/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/fuzzers/weizz_qemu/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
17 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev
18 |
19 | ENV LD_LIBRARY_PATH /out
20 | ENV PATH="$PATH:/out"
21 | ENV AFL_MAP_SIZE=1048576
22 |
--------------------------------------------------------------------------------
/fuzzers/wingfuzz/builder.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | ARG parent_image
16 | FROM $parent_image
17 |
18 | RUN git clone https://github.com/WingTecherTHU/wingfuzz
19 | RUN cd wingfuzz && git checkout 6ef3281f145fa1839df0f46c38b348ec9d93b0e2 && \
20 | ./build.sh && cd instrument && ./build.sh && clang -c WeakSym.c && \
21 | cp ../libFuzzer.a /libWingfuzz.a && cp WeakSym.o / && cp LoadCmpTracer.so /
22 |
--------------------------------------------------------------------------------
/fuzzers/wingfuzz/runner.Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM gcr.io/fuzzbench/base-image
16 |
--------------------------------------------------------------------------------
/pytest.ini:
--------------------------------------------------------------------------------
1 | [pytest]
2 | norecursedirs = docs/_site/* docs/vendor/* third_party/* .venv/*
3 |
4 | markers =
5 | slow: marks tests as slow (deselect with '-m "not slow"')
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | alembic==1.8.1
2 | google-api-python-client==2.64.0
3 | google-auth==2.12.0
4 | google-cloud-error-reporting==1.6.3
5 | google-cloud-logging==3.1.2
6 | google-cloud-secret-manager==2.12.6
7 | clusterfuzz==2.6.0
8 | Jinja2==3.1.2
9 | numpy==1.23.4
10 | MarkupSafe==2.1.1
11 | Orange3==3.33.0
12 | pandas==1.4.4
13 | psutil==5.9.2
14 | psycopg2-binary==2.9.4
15 | pyfakefs==5.0.0
16 | pytest==7.1.3
17 | python-dateutil==2.8.2
18 | pytz==2020.1
19 | PyYAML==6.0
20 | redis==4.3.4
21 | rq==1.11.1
22 | scikit-posthocs==0.7.0
23 | scipy==1.9.2
24 | seaborn==0.13.2
25 | sqlalchemy==1.4.41
26 | protobuf==3.20.3
27 |
28 | # Needed for development.
29 | pylint==2.15.4
30 | pytype==2022.10.13
31 | yapf==0.32.0
32 |
--------------------------------------------------------------------------------
/service/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2023 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/cloud-builders/gcloud
18 |
19 | RUN apt-get update && apt-get install python3-pip -y
20 |
21 | # Do this expensive step before the cache is destroyed.
22 | RUN pip install pip --upgrade
23 | COPY ./requirements.txt /tmp/requirements.txt
24 | RUN pip install -r /tmp/requirements.txt
25 | RUN pip install PyGithub==1.51
26 |
27 | ENV FUZZBENCH_DIR /opt/fuzzbench
28 | COPY . $FUZZBENCH_DIR
29 |
30 | WORKDIR $FUZZBENCH_DIR
31 | ENV PYTHONPATH=$FUZZBENCH_DIR
32 | ENV FORCE_LOCAL=1
33 | ENTRYPOINT ["python3", "/opt/fuzzbench/service/gcbrun_experiment.py"]
--------------------------------------------------------------------------------
/service/core-fuzzers.yaml:
--------------------------------------------------------------------------------
1 | # Core fuzzers used for benchmarking (excludes variants).
2 | # These need to be sorted alphabetical.
3 | fuzzers:
4 | - afl
5 | - aflfast
6 | - aflplusplus
7 | - aflsmart
8 | - centipede
9 | - eclipser
10 | - fairfuzz
11 | - honggfuzz
12 | - libafl
13 | - libfuzzer
14 | - mopt
15 | # - klee # To be supported later.
16 | # - symcc_aflplusplus # To be supported later.
17 |
--------------------------------------------------------------------------------
/service/experiment-config.yaml:
--------------------------------------------------------------------------------
1 | # This is the experiment config file used for the fuzzbench service.
2 | # Unless you are a fuzzbench maintainer running this service, this
3 | # will not work with your setup.
4 |
5 | trials: 20
6 | max_total_time: 82800 # 23 hours, the default time for preemptible experiments.
7 | cloud_project: fuzzbench
8 | docker_registry: gcr.io/fuzzbench
9 | cloud_compute_zone: us-central1-c
10 | experiment_filestore: gs://fuzzbench-data
11 | report_filestore: gs://www.fuzzbench.com/reports
12 | cloud_sql_instance_connection_name: "fuzzbench:us-central1:postgres-experiment-db=tcp:5432"
13 | worker_pool_name: "projects/fuzzbench/locations/us-central1/workerPools/buildpool-e2-std-32" # Mem 128 GB
14 | preemptible_runners: true
15 |
16 | # This experiment should generate a report that is combined with other public
17 | # "production" experiments.
18 | merge_with_nonprivate: true
19 |
20 | # This experiment should be merged with other reports in later experiments.
21 | private: false
22 |
--------------------------------------------------------------------------------
/service/run_experiment_cloudbuild.yaml:
--------------------------------------------------------------------------------
1 | steps:
2 | - name: 'gcr.io/cloud-builders/docker'
3 | args:
4 | - build
5 | - -t
6 | - gcr.io/fuzzbench/experiment-runner
7 | - --build-arg
8 | - BUILDKIT_INLINE_CACHE=1
9 | - --cache-from
10 | - gcr.io/fuzzbench/experiment-runner
11 | - -f
12 | - service/Dockerfile
13 | - .
14 | env:
15 | - 'DOCKER_BUILDKIT=1'
16 | - name: 'gcr.io/fuzzbench/experiment-runner'
17 | args: []
18 | env:
19 | - 'PULL_REQUEST_NUMBER=${_PR_NUMBER}'
20 | secretEnv:
21 | - 'POSTGRES_PASSWORD'
22 | timeout: 1800s # 30 minutes
23 | timeout: 1800s
24 | options:
25 | logging: CLOUD_LOGGING_ONLY
26 | availableSecrets:
27 | secretManager:
28 | - versionName: projects/fuzzbench/secrets/POSTGRES_PASSWORD/versions/1
29 | env: 'POSTGRES_PASSWORD'
30 |
--------------------------------------------------------------------------------
/test_libs/test_data/afl_fuzzer_stats:
--------------------------------------------------------------------------------
1 | start_time : 1602261205
2 | last_update : 1602261205
3 | fuzzer_pid : 2503912
4 | cycles_done : 0
5 | execs_done : 24
6 | execs_per_sec : 1846.15
7 | paths_total : 3
8 | paths_favored : 1
9 | paths_found : 0
10 | paths_imported : 0
11 | max_depth : 1
12 | cur_path : 0
13 | pending_favs : 1
14 | pending_total : 3
15 | variable_paths : 0
16 | stability : 100.00%
17 | bitmap_cvg : 0.00%
18 | unique_crashes : 0
19 | unique_hangs : 0
20 | last_path : 0
21 | last_crash : 0
22 | last_hang : 0
23 | execs_since_crash : 24
24 | exec_timeout : 20
25 | afl_banner : test-instr
26 | afl_version : 2.52b
27 | target_mode : default
28 | command_line : ./afl-fuzz -i /tmp/i -o /tmp/o ./test-instr
29 |
--------------------------------------------------------------------------------