Skip to content

Fuzzing

Fuzzing #140

Workflow file for this run

name: Fuzzing
on:
schedule:
- cron: '0 2 * * *' # Run daily at 2 AM UTC
workflow_dispatch:
jobs:
fuzz:
name: Fuzz Testing
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build fuzz Docker image
run: |
docker compose -f docker-compose.fuzz.yml build
- name: Run fuzzing (60 seconds per target)
run: |
docker compose -f docker-compose.fuzz.yml up || echo "Fuzzing completed with findings"
- name: Check for artifacts
id: check_artifacts
run: |
if [ -d "fuzz/artifacts" ] && [ "$(ls -A fuzz/artifacts 2>/dev/null)" ]; then
echo "artifacts_found=true" >> $GITHUB_OUTPUT
echo "Found crash artifacts:"
find fuzz/artifacts -type f -name "crash-*" -o -name "leak-*" -o -name "timeout-*"
else
echo "artifacts_found=false" >> $GITHUB_OUTPUT
echo "No artifacts found"
fi
- name: Upload artifacts if crashes found
uses: actions/upload-artifact@v4
if: always() && steps.check_artifacts.outputs.artifacts_found == 'true'
with:
name: fuzz-artifacts
path: fuzz/artifacts/
if-no-files-found: ignore