The goal is to enable continuous fuzzing of libuv. There is not a lot of parsing or complex data handling in libuv so I think integrating with OSS-Fuzz is too much. However, ClusterFuzzLite can be used to run fuzzers for a small amount of seconds for each PR to ensure nothing breaks. This commit adds ClusterFuzzLite setup as well as a fuzzer targeting various operations. The fuzzer can be extended, e.g. it would be nice to have more complex FS fuzzing, but I thought I would keep it as is for now and see if you're interested in having fuzzing. Signed-off-by: David Korczynski <david@adalogics.com>
31 lines
809 B
YAML
31 lines
809 B
YAML
name: ClusterFuzzLite PR fuzzing
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
branches: [ v1.x ]
|
|
permissions: read-all
|
|
jobs:
|
|
PR:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
sanitizer: [address]
|
|
steps:
|
|
- name: Build Fuzzers (${{ matrix.sanitizer }})
|
|
id: build
|
|
uses: google/clusterfuzzlite/actions/build_fuzzers@v1
|
|
with:
|
|
sanitizer: ${{ matrix.sanitizer }}
|
|
language: c
|
|
bad-build-check: false
|
|
- name: Run Fuzzers (${{ matrix.sanitizer }})
|
|
id: run
|
|
uses: google/clusterfuzzlite/actions/run_fuzzers@v1
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
fuzz-seconds: 100
|
|
mode: 'code-change'
|
|
report-unreproducible-crashes: false
|
|
sanitizer: ${{ matrix.sanitizer }}
|