Separate fuzzer test in CI (#2010)
* ci * ci * ci * aa * aa * a * a * a * fix * no fail fast * system * what is this lint... * a * clp * disk * ok no fastfail * no qemu for now, reenable monday
This commit is contained in:
parent
4901846588
commit
527b892c1d
420
.github/workflows/build_and_test.yml
vendored
420
.github/workflows/build_and_test.yml
vendored
@ -233,373 +233,75 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest]
|
os: [ubuntu-latest]
|
||||||
|
fuzzer:
|
||||||
|
- ./fuzzers/fuzzbench_fork_qemu
|
||||||
|
- ./fuzzers/libfuzzer_stb_image_sugar
|
||||||
|
- ./fuzzers/nyx_libxml2_standalone
|
||||||
|
- ./fuzzers/baby_fuzzer_gramatron
|
||||||
|
- ./fuzzers/tinyinst_simple
|
||||||
|
- ./fuzzers/baby_fuzzer_with_forkexecutor
|
||||||
|
- ./fuzzers/baby_no_std
|
||||||
|
- ./fuzzers/baby_fuzzer_swap_differential
|
||||||
|
- ./fuzzers/baby_fuzzer_grimoire
|
||||||
|
- ./fuzzers/baby_fuzzer
|
||||||
|
- ./fuzzers/libfuzzer_libpng_launcher
|
||||||
|
- ./fuzzers/libfuzzer_libpng_accounting
|
||||||
|
- ./fuzzers/forkserver_libafl_cc
|
||||||
|
- ./fuzzers/libfuzzer_libpng_tcp_manager
|
||||||
|
- ./fuzzers/backtrace_baby_fuzzers
|
||||||
|
- ./fuzzers/fuzzbench_qemu
|
||||||
|
- ./fuzzers/nyx_libxml2_parallel
|
||||||
|
- ./fuzzers/qemu_launcher
|
||||||
|
- ./fuzzers/frida_gdiplus
|
||||||
|
- ./fuzzers/libfuzzer_stb_image_concolic
|
||||||
|
- ./fuzzers/nautilus_sync
|
||||||
|
# - ./fuzzers/qemu_cmin
|
||||||
|
# - ./fuzzers/qemu_systemmode
|
||||||
|
- ./fuzzers/push_harness
|
||||||
|
- ./fuzzers/libfuzzer_libpng_centralized
|
||||||
|
- ./fuzzers/baby_fuzzer_nautilus
|
||||||
|
- ./fuzzers/fuzzbench_text
|
||||||
|
- ./fuzzers/libfuzzer_libpng_cmin
|
||||||
|
- ./fuzzers/forkserver_simple
|
||||||
|
- ./fuzzers/baby_fuzzer_unicode
|
||||||
|
- ./fuzzers/libfuzzer_libpng_norestart
|
||||||
|
- ./fuzzers/baby_fuzzer_multi
|
||||||
|
- ./fuzzers/libafl_atheris
|
||||||
|
- ./fuzzers/frida_libpng
|
||||||
|
- ./fuzzers/fuzzbench_ctx
|
||||||
|
- ./fuzzers/fuzzbench_forkserver_cmplog
|
||||||
|
- ./fuzzers/push_stage_harness
|
||||||
|
- ./fuzzers/libfuzzer_libmozjpeg
|
||||||
|
- ./fuzzers/libfuzzer_libpng_aflpp_ui
|
||||||
|
- ./fuzzers/libfuzzer_libpng
|
||||||
|
- ./fuzzers/baby_fuzzer_wasm
|
||||||
|
- ./fuzzers/fuzzbench
|
||||||
|
- ./fuzzers/libfuzzer_stb_image
|
||||||
|
- ./fuzzers/fuzzbench_forkserver
|
||||||
|
- ./fuzzers/libfuzzer_windows_asan
|
||||||
|
- ./fuzzers/baby_fuzzer_minimizing
|
||||||
|
# - ./fuzzers/qemu_coverage
|
||||||
|
- ./fuzzers/frida_executable_libpng
|
||||||
|
- ./fuzzers/tutorial
|
||||||
|
- ./fuzzers/baby_fuzzer_tokens
|
||||||
|
- ./fuzzers/backtrace_baby_fuzzers/rust_code_with_inprocess_executor
|
||||||
|
- ./fuzzers/backtrace_baby_fuzzers/c_code_with_fork_executor
|
||||||
|
- ./fuzzers/backtrace_baby_fuzzers/command_executor
|
||||||
|
- ./fuzzers/backtrace_baby_fuzzers/forkserver_executor
|
||||||
|
- ./fuzzers/backtrace_baby_fuzzers/c_code_with_inprocess_executor
|
||||||
|
- ./fuzzers/backtrace_baby_fuzzers/rust_code_with_fork_executor
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
- name: Free Disk Space (Ubuntu)
|
|
||||||
uses: jlumbroso/free-disk-space@main
|
|
||||||
with:
|
|
||||||
# this might remove tools that are actually needed,
|
|
||||||
# if set to "true" but frees about 6 GB
|
|
||||||
tool-cache: false
|
|
||||||
|
|
||||||
# all of these default to true, but feel free to set to
|
|
||||||
# "false" if necessary for your workflow
|
|
||||||
android: true
|
|
||||||
dotnet: true
|
|
||||||
haskell: true
|
|
||||||
large-packages: false
|
|
||||||
docker-images: true
|
|
||||||
swap-storage: true
|
|
||||||
- name: Add nightly rustfmt and clippy
|
|
||||||
run: rustup toolchain install nightly --component rustfmt --component clippy --allow-downgrade
|
|
||||||
- name: Add no_std toolchain
|
|
||||||
run: rustup toolchain install nightly-x86_64-unknown-linux-gnu ; rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
|
|
||||||
- name: Add wasm target
|
|
||||||
run: rustup target add wasm32-unknown-unknown
|
|
||||||
- name: Install ucd-generate
|
|
||||||
run: cargo install -f ucd-generate
|
|
||||||
- name: Remove obsolete llvm (Linux)
|
|
||||||
run: sudo apt purge llvm* clang*
|
|
||||||
- name: Install LLVM and Clang
|
|
||||||
uses: KyleMayes/install-llvm-action@v1
|
|
||||||
with:
|
|
||||||
directory: ${{ runner.temp }}/llvm
|
|
||||||
version: 17
|
|
||||||
- name: Install deps
|
|
||||||
run: sudo apt update && sudo apt install nasm ninja-build gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-mipsel-linux-gnu g++-mipsel-linux-gnu gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dev-i386-cross libc6-dev libc6-dev-i386 lib32gcc-11-dev lib32stdc++-11-dev libgtk-3-dev pax-utils libz3-dev
|
|
||||||
- name: pip install
|
|
||||||
run: python3 -m pip install msgpack jinja2 find_libpython
|
|
||||||
# Note that nproc needs to have coreutils installed on macOS, so the order of CI commands matters.
|
|
||||||
- name: enable mult-thread for `make`
|
|
||||||
run: export MAKEFLAGS="-j$(expr $(nproc) \+ 1)"
|
|
||||||
- name: install cargo-make
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: cargo-make
|
|
||||||
- name: install wasm-pack
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: wasm-pack
|
|
||||||
- name: install cxxbridge-cmd
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: cxxbridge-cmd
|
|
||||||
- name: install chrome
|
|
||||||
uses: browser-actions/setup-chrome@v1
|
|
||||||
with:
|
|
||||||
chrome-version: stable
|
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
- uses: ./.github/workflows/fuzzer-tester-prepare
|
||||||
submodules: true # recursively checkout submodules
|
|
||||||
fetch-depth: 0 # to diff with origin/main
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
- name: Symlink Headers
|
- name: Symlink Headers
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
# We can't install gcc-multilib which would usually do this for us due to collisions with other packages
|
shell: bash
|
||||||
run: sudo ln -s /usr/include/asm-generic /usr/include/asm
|
run: sudo ln -s /usr/include/asm-generic /usr/include/asm
|
||||||
- name: Build and run example fuzzers (Linux)
|
- name: Build and run example fuzzers (Linux)
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
run: RUN_ON_CI=1 LLVM_CONFIG=llvm-config ./scripts/test_all_fuzzers.sh
|
shell: bash
|
||||||
|
run: RUN_ON_CI=1 LLVM_CONFIG=llvm-config ./scripts/test_all_fuzzers.sh ${{ matrix.fuzzer }}
|
||||||
qemu_fuzzers:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
- name: Free Disk Space (Ubuntu)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
uses: jlumbroso/free-disk-space@main
|
|
||||||
with:
|
|
||||||
# this might remove tools that are actually needed,
|
|
||||||
# if set to "true" but frees about 6 GB
|
|
||||||
tool-cache: false
|
|
||||||
|
|
||||||
# all of these default to true, but feel free to set to
|
|
||||||
# "false" if necessary for your workflow
|
|
||||||
android: true
|
|
||||||
dotnet: true
|
|
||||||
haskell: true
|
|
||||||
large-packages: false
|
|
||||||
docker-images: true
|
|
||||||
swap-storage: true
|
|
||||||
- name: Add nightly rustfmt and clippy
|
|
||||||
run: rustup toolchain install nightly --component rustfmt --component clippy --allow-downgrade
|
|
||||||
- name: Add no_std toolchain
|
|
||||||
run: rustup toolchain install nightly-x86_64-unknown-linux-gnu ; rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
|
|
||||||
- name: Add wasm target
|
|
||||||
run: rustup target add wasm32-unknown-unknown
|
|
||||||
- name: Install ucd-generate
|
|
||||||
run: cargo install -f ucd-generate
|
|
||||||
- name: Remove obsolete llvm (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: sudo apt purge llvm* clang*
|
|
||||||
- name: Install LLVM and Clang
|
|
||||||
uses: KyleMayes/install-llvm-action@v1
|
|
||||||
with:
|
|
||||||
directory: ${{ runner.temp }}/llvm
|
|
||||||
version: 17
|
|
||||||
- name: Install deps
|
|
||||||
run: sudo apt update && sudo apt install nasm ninja-build gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-mipsel-linux-gnu g++-mipsel-linux-gnu gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dev-i386-cross libc6-dev libc6-dev-i386 lib32gcc-11-dev lib32stdc++-11-dev libgtk-3-dev pax-utils libz3-dev qemu-utils
|
|
||||||
- name: pip install
|
|
||||||
run: python3 -m pip install msgpack jinja2 find_libpython
|
|
||||||
# Note that nproc needs to have coreutils installed on macOS, so the order of CI commands matters.
|
|
||||||
- name: enable mult-thread for `make`
|
|
||||||
run: export MAKEFLAGS="-j$(expr $(nproc) \+ 1)"
|
|
||||||
- name: install cargo-make
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: cargo-make
|
|
||||||
- name: install wasm-pack
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: wasm-pack
|
|
||||||
- name: install chrome
|
|
||||||
uses: browser-actions/setup-chrome@v1
|
|
||||||
with:
|
|
||||||
chrome-version: stable
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: true # recursively checkout submodules
|
|
||||||
fetch-depth: 0 # to diff with origin/main
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
- name: Symlink Headers
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
# We can't install gcc-multilib which would usually do this for us due to collisions with other packages
|
|
||||||
run: sudo ln -s /usr/include/asm-generic /usr/include/asm
|
|
||||||
- name: Build and run example fuzzers (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: RUN_ON_CI=1 RUN_QEMU_FUZZER=1 LLVM_CONFIG=llvm-config ./scripts/test_all_fuzzers.sh
|
|
||||||
|
|
||||||
baby_fuzzers:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
- name: Free Disk Space (Ubuntu)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
uses: jlumbroso/free-disk-space@main
|
|
||||||
with:
|
|
||||||
# this might remove tools that are actually needed,
|
|
||||||
# if set to "true" but frees about 6 GB
|
|
||||||
tool-cache: false
|
|
||||||
|
|
||||||
# all of these default to true, but feel free to set to
|
|
||||||
# "false" if necessary for your workflow
|
|
||||||
android: true
|
|
||||||
dotnet: true
|
|
||||||
haskell: true
|
|
||||||
large-packages: false
|
|
||||||
docker-images: true
|
|
||||||
swap-storage: true
|
|
||||||
- name: Add nightly rustfmt and clippy
|
|
||||||
run: rustup toolchain install nightly --component rustfmt --component clippy --allow-downgrade
|
|
||||||
- name: Add no_std toolchain
|
|
||||||
run: rustup toolchain install nightly-x86_64-unknown-linux-gnu ; rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
|
|
||||||
- name: Add wasm target
|
|
||||||
run: rustup target add wasm32-unknown-unknown
|
|
||||||
- name: Install ucd-generate
|
|
||||||
run: cargo install -f ucd-generate
|
|
||||||
- name: Remove obsolete llvm (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: sudo apt purge llvm* clang*
|
|
||||||
- name: Install LLVM and Clang
|
|
||||||
uses: KyleMayes/install-llvm-action@v1
|
|
||||||
with:
|
|
||||||
directory: ${{ runner.temp }}/llvm
|
|
||||||
version: 17
|
|
||||||
- name: Install deps
|
|
||||||
run: sudo apt update && sudo apt install nasm ninja-build gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-mipsel-linux-gnu g++-mipsel-linux-gnu gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dev-i386-cross libc6-dev libc6-dev-i386 lib32gcc-11-dev lib32stdc++-11-dev libgtk-3-dev pax-utils libz3-dev
|
|
||||||
- name: pip install
|
|
||||||
run: python3 -m pip install msgpack jinja2 find_libpython
|
|
||||||
# Note that nproc needs to have coreutils installed on macOS, so the order of CI commands matters.
|
|
||||||
- name: enable mult-thread for `make`
|
|
||||||
run: export MAKEFLAGS="-j$(expr $(nproc) \+ 1)"
|
|
||||||
- name: install cargo-make
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: cargo-make
|
|
||||||
- name: install wasm-pack
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: wasm-pack
|
|
||||||
- name: install chrome
|
|
||||||
uses: browser-actions/setup-chrome@v1
|
|
||||||
with:
|
|
||||||
chrome-version: stable
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: true # recursively checkout submodules
|
|
||||||
fetch-depth: 0 # to diff with origin/main
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
- name: Symlink Headers
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
# We can't install gcc-multilib which would usually do this for us due to collisions with other packages
|
|
||||||
run: sudo ln -s /usr/include/asm-generic /usr/include/asm
|
|
||||||
- name: Build and run example fuzzers (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: RUN_ON_CI=1 RUN_BABY_FUZZER=1 LLVM_CONFIG=llvm-config ./scripts/test_all_fuzzers.sh
|
|
||||||
|
|
||||||
libpng_fuzzers:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
- name: Free Disk Space (Ubuntu)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
uses: jlumbroso/free-disk-space@main
|
|
||||||
with:
|
|
||||||
# this might remove tools that are actually needed,
|
|
||||||
# if set to "true" but frees about 6 GB
|
|
||||||
tool-cache: false
|
|
||||||
|
|
||||||
# all of these default to true, but feel free to set to
|
|
||||||
# "false" if necessary for your workflow
|
|
||||||
android: true
|
|
||||||
dotnet: true
|
|
||||||
haskell: true
|
|
||||||
large-packages: false
|
|
||||||
docker-images: true
|
|
||||||
swap-storage: true
|
|
||||||
- name: Add nightly rustfmt and clippy
|
|
||||||
run: rustup toolchain install nightly --component rustfmt --component clippy --allow-downgrade
|
|
||||||
- name: Add no_std toolchain
|
|
||||||
run: rustup toolchain install nightly-x86_64-unknown-linux-gnu ; rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
|
|
||||||
- name: Add wasm target
|
|
||||||
run: rustup target add wasm32-unknown-unknown
|
|
||||||
- name: Install ucd-generate
|
|
||||||
run: cargo install -f ucd-generate
|
|
||||||
- name: Remove obsolete llvm (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: sudo apt purge llvm* clang*
|
|
||||||
- name: Install LLVM and Clang
|
|
||||||
uses: KyleMayes/install-llvm-action@v1
|
|
||||||
with:
|
|
||||||
directory: ${{ runner.temp }}/llvm
|
|
||||||
version: 17
|
|
||||||
- name: Install deps
|
|
||||||
run: sudo apt update && sudo apt install nasm ninja-build gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-mipsel-linux-gnu g++-mipsel-linux-gnu gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dev-i386-cross libc6-dev libc6-dev-i386 lib32gcc-11-dev lib32stdc++-11-dev libgtk-3-dev pax-utils libz3-dev
|
|
||||||
- name: pip install
|
|
||||||
run: python3 -m pip install msgpack jinja2 find_libpython
|
|
||||||
# Note that nproc needs to have coreutils installed on macOS, so the order of CI commands matters.
|
|
||||||
- name: enable mult-thread for `make`
|
|
||||||
run: export MAKEFLAGS="-j$(expr $(nproc) \+ 1)"
|
|
||||||
- name: install cargo-make
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: cargo-make
|
|
||||||
- name: install wasm-pack
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: wasm-pack
|
|
||||||
- name: install chrome
|
|
||||||
uses: browser-actions/setup-chrome@v1
|
|
||||||
with:
|
|
||||||
chrome-version: stable
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: true # recursively checkout submodules
|
|
||||||
fetch-depth: 0 # to diff with origin/main
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
- name: Symlink Headers
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
# We can't install gcc-multilib which would usually do this for us due to collisions with other packages
|
|
||||||
run: sudo ln -s /usr/include/asm-generic /usr/include/asm
|
|
||||||
- name: Build and run example fuzzers (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: RUN_ON_CI=1 RUN_LIBPNG_FUZZER=1 LLVM_CONFIG=llvm-config ./scripts/test_all_fuzzers.sh
|
|
||||||
|
|
||||||
fuzzbench_fuzzers:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
- name: Free Disk Space (Ubuntu)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
uses: jlumbroso/free-disk-space@main
|
|
||||||
with:
|
|
||||||
# this might remove tools that are actually needed,
|
|
||||||
# if set to "true" but frees about 6 GB
|
|
||||||
tool-cache: false
|
|
||||||
|
|
||||||
# all of these default to true, but feel free to set to
|
|
||||||
# "false" if necessary for your workflow
|
|
||||||
android: true
|
|
||||||
dotnet: true
|
|
||||||
haskell: true
|
|
||||||
large-packages: false
|
|
||||||
docker-images: true
|
|
||||||
swap-storage: true
|
|
||||||
- name: Add nightly rustfmt and clippy
|
|
||||||
run: rustup toolchain install nightly --component rustfmt --component clippy --allow-downgrade
|
|
||||||
- name: Add no_std toolchain
|
|
||||||
run: rustup toolchain install nightly-x86_64-unknown-linux-gnu ; rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
|
|
||||||
- name: Add wasm target
|
|
||||||
run: rustup target add wasm32-unknown-unknown
|
|
||||||
- name: Install ucd-generate
|
|
||||||
run: cargo install -f ucd-generate
|
|
||||||
- name: Remove obsolete llvm (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: sudo apt purge llvm* clang*
|
|
||||||
- name: Install LLVM and Clang
|
|
||||||
uses: KyleMayes/install-llvm-action@v1
|
|
||||||
with:
|
|
||||||
directory: ${{ runner.temp }}/llvm
|
|
||||||
version: 17
|
|
||||||
- name: Install deps
|
|
||||||
run: sudo apt update && sudo apt install nasm ninja-build gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-mipsel-linux-gnu g++-mipsel-linux-gnu gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dev-i386-cross libc6-dev libc6-dev-i386 lib32gcc-11-dev lib32stdc++-11-dev libgtk-3-dev pax-utils libz3-dev
|
|
||||||
- name: pip install
|
|
||||||
run: python3 -m pip install msgpack jinja2 find_libpython
|
|
||||||
# Note that nproc needs to have coreutils installed on macOS, so the order of CI commands matters.
|
|
||||||
- name: enable mult-thread for `make`
|
|
||||||
run: export MAKEFLAGS="-j$(expr $(nproc) \+ 1)"
|
|
||||||
- name: install cargo-make
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: cargo-make
|
|
||||||
- name: install wasm-pack
|
|
||||||
uses: baptiste0928/cargo-install@v1.3.0
|
|
||||||
with:
|
|
||||||
crate: wasm-pack
|
|
||||||
- name: install chrome
|
|
||||||
uses: browser-actions/setup-chrome@v1
|
|
||||||
with:
|
|
||||||
chrome-version: stable
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
submodules: true # recursively checkout submodules
|
|
||||||
fetch-depth: 0 # to diff with origin/main
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
- name: Symlink Headers
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
# We can't install gcc-multilib which would usually do this for us due to collisions with other packages
|
|
||||||
run: sudo ln -s /usr/include/asm-generic /usr/include/asm
|
|
||||||
- name: Build and run example fuzzers (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: RUN_ON_CI=1 RUN_FUZZBENCH_FUZZER=1 LLVM_CONFIG=llvm-config ./scripts/test_all_fuzzers.sh
|
|
||||||
|
|
||||||
nostd-build:
|
nostd-build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
66
.github/workflows/fuzzer-tester-prepare/action.yml
vendored
Normal file
66
.github/workflows/fuzzer-tester-prepare/action.yml
vendored
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
name: Setup Rust Environment
|
||||||
|
description: Sets up the Rust environment for the CI workflow
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
with:
|
||||||
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||||
|
- uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
profile: minimal
|
||||||
|
toolchain: stable
|
||||||
|
- name: Add nightly rustfmt and clippy
|
||||||
|
shell: bash
|
||||||
|
run: rustup toolchain install nightly --component rustfmt --component clippy --allow-downgrade
|
||||||
|
- name: Add no_std toolchain
|
||||||
|
shell: bash
|
||||||
|
run: rustup toolchain install nightly-x86_64-unknown-linux-gnu ; rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
|
||||||
|
- name: Add wasm target
|
||||||
|
shell: bash
|
||||||
|
run: rustup target add wasm32-unknown-unknown
|
||||||
|
- name: Install ucd-generate
|
||||||
|
shell: bash
|
||||||
|
run: cargo install -f ucd-generate
|
||||||
|
- name: Remove obsolete llvm (Linux)
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
shell: bash
|
||||||
|
run: sudo apt purge llvm* clang*
|
||||||
|
- name: Install LLVM and Clang
|
||||||
|
uses: KyleMayes/install-llvm-action@v1
|
||||||
|
with:
|
||||||
|
directory: ${{ runner.temp }}/llvm
|
||||||
|
version: 17
|
||||||
|
- name: Install deps
|
||||||
|
shell: bash
|
||||||
|
run: sudo apt update && sudo apt install nasm ninja-build gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-mipsel-linux-gnu g++-mipsel-linux-gnu gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dev-i386-cross libc6-dev libc6-dev-i386 lib32gcc-11-dev lib32stdc++-11-dev libgtk-3-dev pax-utils libz3-dev
|
||||||
|
- name: pip install
|
||||||
|
shell: bash
|
||||||
|
run: python3 -m pip install msgpack jinja2 find_libpython
|
||||||
|
- name: enable mult-thread for `make`
|
||||||
|
shell: bash
|
||||||
|
run: export MAKEFLAGS="-j$(expr $(nproc) \+ 1)"
|
||||||
|
- name: install cargo-make
|
||||||
|
uses: baptiste0928/cargo-install@v1.3.0
|
||||||
|
with:
|
||||||
|
crate: cargo-make
|
||||||
|
- name: install wasm-pack
|
||||||
|
uses: baptiste0928/cargo-install@v1.3.0
|
||||||
|
with:
|
||||||
|
crate: wasm-pack
|
||||||
|
- name: install cxxbridge-cmd
|
||||||
|
uses: baptiste0928/cargo-install@v1.3.0
|
||||||
|
with:
|
||||||
|
crate: cxxbridge-cmd
|
||||||
|
- name: install chrome
|
||||||
|
uses: browser-actions/setup-chrome@v1
|
||||||
|
with:
|
||||||
|
chrome-version: stable
|
||||||
|
- name: Symlink Headers
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
shell: bash
|
||||||
|
run: sudo ln -s /usr/include/asm-generic /usr/include/asm
|
@ -29,7 +29,8 @@ Welcome to `LibAFL`
|
|||||||
clippy::ptr_cast_constness,
|
clippy::ptr_cast_constness,
|
||||||
clippy::unsafe_derive_deserialize,
|
clippy::unsafe_derive_deserialize,
|
||||||
clippy::similar_names,
|
clippy::similar_names,
|
||||||
clippy::too_many_lines
|
clippy::too_many_lines,
|
||||||
|
clippy::missing_transmute_annotations
|
||||||
)]
|
)]
|
||||||
#![cfg_attr(not(test), warn(
|
#![cfg_attr(not(test), warn(
|
||||||
missing_debug_implementations,
|
missing_debug_implementations,
|
||||||
|
@ -30,7 +30,8 @@
|
|||||||
clippy::module_name_repetitions,
|
clippy::module_name_repetitions,
|
||||||
clippy::ptr_cast_constness,
|
clippy::ptr_cast_constness,
|
||||||
clippy::negative_feature_names,
|
clippy::negative_feature_names,
|
||||||
clippy::too_many_lines
|
clippy::too_many_lines,
|
||||||
|
clippy::missing_transmute_annotations
|
||||||
)]
|
)]
|
||||||
#![cfg_attr(not(test), warn(
|
#![cfg_attr(not(test), warn(
|
||||||
missing_debug_implementations,
|
missing_debug_implementations,
|
||||||
|
@ -272,7 +272,10 @@ where
|
|||||||
fn take<'a, T: 'static>(mut self) -> (Option<&'a T>, Self) {
|
fn take<'a, T: 'static>(mut self) -> (Option<&'a T>, Self) {
|
||||||
if TypeId::of::<T>() == TypeId::of::<Head>() {
|
if TypeId::of::<T>() == TypeId::of::<Head>() {
|
||||||
let r = self.0.take();
|
let r = self.0.take();
|
||||||
(unsafe { core::mem::transmute(r) }, self)
|
(
|
||||||
|
unsafe { core::mem::transmute::<Option<&Head>, Option<&T>>(r) },
|
||||||
|
self,
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
let (r, tail) = self.1.take::<T>();
|
let (r, tail) = self.1.take::<T>();
|
||||||
(r, (self.0, tail))
|
(r, (self.0, tail))
|
||||||
@ -288,7 +291,10 @@ where
|
|||||||
fn take<'a, T: 'static>(mut self) -> (Option<&'a T>, Self) {
|
fn take<'a, T: 'static>(mut self) -> (Option<&'a T>, Self) {
|
||||||
if TypeId::of::<T>() == TypeId::of::<Head>() {
|
if TypeId::of::<T>() == TypeId::of::<Head>() {
|
||||||
let r = self.0.take();
|
let r = self.0.take();
|
||||||
(unsafe { core::mem::transmute(r) }, self)
|
(
|
||||||
|
unsafe { core::mem::transmute::<Option<&mut Head>, Option<&T>>(r) },
|
||||||
|
self,
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
let (r, tail) = self.1.take::<T>();
|
let (r, tail) = self.1.take::<T>();
|
||||||
(r, (self.0, tail))
|
(r, (self.0, tail))
|
||||||
@ -316,7 +322,10 @@ where
|
|||||||
fn take<'a, T: 'static>(mut self) -> (Option<&'a mut T>, Self) {
|
fn take<'a, T: 'static>(mut self) -> (Option<&'a mut T>, Self) {
|
||||||
if TypeId::of::<T>() == TypeId::of::<Head>() {
|
if TypeId::of::<T>() == TypeId::of::<Head>() {
|
||||||
let r = self.0.take();
|
let r = self.0.take();
|
||||||
(unsafe { core::mem::transmute(r) }, self)
|
(
|
||||||
|
unsafe { core::mem::transmute::<Option<&mut Head>, Option<&mut T>>(r) },
|
||||||
|
self,
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
let (r, tail) = self.1.take::<T>();
|
let (r, tail) = self.1.take::<T>();
|
||||||
(r, (self.0, tail))
|
(r, (self.0, tail))
|
||||||
|
@ -13,7 +13,8 @@
|
|||||||
clippy::missing_panics_doc,
|
clippy::missing_panics_doc,
|
||||||
clippy::missing_docs_in_private_items,
|
clippy::missing_docs_in_private_items,
|
||||||
clippy::module_name_repetitions,
|
clippy::module_name_repetitions,
|
||||||
clippy::unreadable_literal
|
clippy::unreadable_literal,
|
||||||
|
clippy::missing_transmute_annotations
|
||||||
)]
|
)]
|
||||||
#]
|
)]
|
||||||
#![cfg_attr(not(test), warn(
|
#![cfg_attr(not(test), warn(
|
||||||
missing_debug_implementations,
|
missing_debug_implementations,
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#![allow(clippy::transmute_ptr_to_ptr)]
|
#![allow(clippy::transmute_ptr_to_ptr)]
|
||||||
#![allow(clippy::ptr_cast_constness)]
|
#![allow(clippy::ptr_cast_constness)]
|
||||||
#![allow(clippy::too_many_arguments)]
|
#![allow(clippy::too_many_arguments)]
|
||||||
|
#![allow(clippy::missing_transmute_annotations)]
|
||||||
// Till they fix this buggy lint in clippy
|
// Till they fix this buggy lint in clippy
|
||||||
#![allow(clippy::borrow_as_ptr)]
|
#![allow(clippy::borrow_as_ptr)]
|
||||||
#![allow(clippy::borrow_deref_ref)]
|
#![allow(clippy::borrow_deref_ref)]
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
clippy::missing_panics_doc,
|
clippy::missing_panics_doc,
|
||||||
clippy::missing_docs_in_private_items,
|
clippy::missing_docs_in_private_items,
|
||||||
clippy::module_name_repetitions,
|
clippy::module_name_repetitions,
|
||||||
clippy::pub_underscore_fields
|
clippy::pub_underscore_fields,
|
||||||
|
clippy::missing_transmute_annotations
|
||||||
)]
|
)]
|
||||||
#![cfg_attr(not(test), warn(
|
#![cfg_attr(not(test), warn(
|
||||||
missing_debug_implementations,
|
missing_debug_implementations,
|
||||||
|
@ -6,35 +6,16 @@ cd "$SCRIPT_DIR/.." || exit 1
|
|||||||
|
|
||||||
|
|
||||||
if [[ -z "${RUN_ON_CI}" ]]; then
|
if [[ -z "${RUN_ON_CI}" ]]; then
|
||||||
fuzzers=$(find ./fuzzers -mindepth 1 -maxdepth 1 -type d)
|
fuzzer_to_test="$1"
|
||||||
backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -mindepth 1 -maxdepth 1 -type d)
|
|
||||||
else
|
else
|
||||||
cargo build -p build_and_test_fuzzers
|
fuzzer_to_test="$1"
|
||||||
fuzzers=$(cargo run -p build_and_test_fuzzers -- "remotes/origin/main" "HEAD^")
|
|
||||||
backtrace_fuzzers=""
|
|
||||||
export PROFILE=dev
|
export PROFILE=dev
|
||||||
export PROFILE_DIR=debug
|
export PROFILE_DIR=debug
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n "${RUN_FUZZBENCH_FUZZER}" ]]; then
|
|
||||||
fuzzers=$(echo "$fuzzers" | tr ' ' '\n' | grep "fuzzbench")
|
|
||||||
backtrace_fuzzers=$(echo "$backtrace_fuzzers" | tr ' ' '\n' | grep "fuzzbench")
|
|
||||||
elif [[ -n "${RUN_QEMU_FUZZER}" ]]; then
|
|
||||||
fuzzers=$(echo "$fuzzers" | tr ' ' '\n' | grep "qemu")
|
|
||||||
backtrace_fuzzers=$(echo "$backtrace_fuzzers" | tr ' ' '\n' | grep "qemu")
|
|
||||||
elif [[ -n "${RUN_BABY_FUZZER}" ]]; then
|
|
||||||
fuzzers=$(echo "$fuzzers" | tr ' ' '\n' | grep "baby")
|
|
||||||
backtrace_fuzzers=$(echo "$backtrace_fuzzers" | tr ' ' '\n' | grep "baby")
|
|
||||||
elif [[ -n "${RUN_LIBPNG_FUZZER}" ]]; then
|
|
||||||
fuzzers=$(echo "$fuzzers" | tr ' ' '\n' | grep "libpng")
|
|
||||||
backtrace_fuzzers=$(echo "$backtrace_fuzzers" | tr ' ' '\n' | grep "libpng")
|
|
||||||
else
|
|
||||||
fuzzers=$(echo "$fuzzers" | tr ' ' '\n' | grep -v "qemu" | grep -v "baby" | grep -v "libpng" | grep -v "fuzzbench")
|
|
||||||
backtrace_fuzzers=$(echo "$backtrace_fuzzers" | tr ' ' '\n' | grep -v "qemu" | grep -v "baby" | grep -v "libpng" | grep - v "fuzzbench")
|
|
||||||
fi
|
|
||||||
|
|
||||||
libafl=$(pwd)
|
libafl=$(pwd)
|
||||||
|
|
||||||
|
echo "Testing" "$fuzzer_to_test"
|
||||||
# build with a shared target dir for all fuzzers. this should speed up
|
# build with a shared target dir for all fuzzers. this should speed up
|
||||||
# compilation a bit, and allows for easier artifact management (caching and
|
# compilation a bit, and allows for easier artifact management (caching and
|
||||||
# cargo clean).
|
# cargo clean).
|
||||||
@ -57,7 +38,7 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# shellcheck disable=SC2116
|
# shellcheck disable=SC2116
|
||||||
for fuzzer in $(echo "$fuzzers" "$backtrace_fuzzers");
|
for fuzzer in $(echo "$fuzzer_to_test");
|
||||||
do
|
do
|
||||||
# skip nyx test on non-linux platforms
|
# skip nyx test on non-linux platforms
|
||||||
if [[ $fuzzer == *"nyx_"* ]] && [[ $(uname -s) != "Linux" ]]; then
|
if [[ $fuzzer == *"nyx_"* ]] && [[ $(uname -s) != "Linux" ]]; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user