Skip to content

Fix

Fix #62

Workflow file for this run

name: Crate πŸ“¦ Distribution
on:
push:
pull_request:
jobs:
build:
runs-on: ubuntu-latest
name: Build
steps:
- uses: actions/checkout@v4
- name: 'πŸ› οΈ Set up Rust'
uses: dtolnay/rust-toolchain@stable
- name: 'πŸ› οΈ Set up dependency of AFL++'
run: |
sudo apt update && sudo apt install -y llvm-16-dev clang-16 build-essential \
libtool libtool-bin libglib2.0-dev python3 make cmake automake meson ninja-build bison flex &&\
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-16 0 && \
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-16 0
- name: '🚧 Cargo test'
run: |
cargo test
- name: '🚧 Build sample'
run: |
cargo build --release --example sample --features env_logger
- name: '🚧 AFLplusplus Checkout'
uses: actions/checkout@v4
with:
repository: 'AFLplusplus/AFLplusplus'
ref: 'dev'
path: 'AFLplusplus'
- name: '🚧 AFLplusplus Setup'
run: |
cd AFLplusplus &&\
make -j4 afl-fuzz
- name: '🚧 Prepare fuzz resources'
run: |
mkdir ./input && echo 'a' > ./input/a
- name: '🚧 Fuzz 4-byte cmplog for 60 seconds'
run: |
./AFLplusplus/afl-fuzz -i ./input -o ./output-4 -b 1 -g 4 -G 4 -V 60 -c 0 -- ./target/release/examples/sample @@
env:
AFL_BENCH_UNTIL_CRASH: 1
AFL_NO_CRASH_README: 1
AFL_NO_UI: 1
AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES: 1
AFL_SKIP_CPUFREQ: 1
UNICORN_AFL_CMPCOV: 1
- name: "🚧 Check if we find the crash"
run: |
ls ./output-4/default/crashes/
if [ "$(find ./output-4/default/crashes/ -type f | wc -l)" -eq 0 ]; then
cat ./output-4/default/fuzzer_stats
exit 1;
else
if ! [ "$(grep "stab" ./output-4/default/fuzzer_stats | awk '{print $3}')" = '100.00%' ]; then
cat ./output-4/default/fuzzer_stats
exit 2;
fi
fi
- name: '🚧 Fuzz 8-byte cmplog for 60 seconds'
run: |
./AFLplusplus/afl-fuzz -i ./input -o ./output-8 -b 1 -g 8 -G 8 -V 60 -c 0 -- ./target/release/examples/sample @@ true
env:
AFL_BENCH_UNTIL_CRASH: 1
AFL_NO_CRASH_README: 1
AFL_NO_UI: 1
AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES: 1
AFL_SKIP_CPUFREQ: 1
UNICORN_AFL_CMPCOV: 1
- name: "🚧 Check if we find the crash"
run: |
ls ./output-8/default/crashes/
if [ "$(find ./output-8/default/crashes/ -type f | wc -l)" -eq 0 ]; then
cat ./output-8/default/fuzzer_stats
exit 1;
else
if ! [ "$(grep "stab" ./output-8/default/fuzzer_stats | awk '{print $3}')" = '100.00%' ]; then
cat ./output-8/default/fuzzer_stats
exit 2;
fi
fi
- name: 'πŸ“¦ Cargo Publish'
if: startsWith(github.ref, 'refs/tags')
env:
TOKEN: ${{ secrets.CRATES_IO_KEY }}
run: |
cargo login $TOKEN && cargo test && cargo publish
fmt-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cargo fmt
run: cargo fmt --check
fmt-toml-check:
runs-on: ubuntu-latest
steps:
- name: Install taplo
run: cargo install taplo-cli --locked
- uses: actions/checkout@v4
- name: Run taplo
run: taplo format --check