Skip to content

chore(renovate): automerge lock-file maintenance #15

chore(renovate): automerge lock-file maintenance

chore(renovate): automerge lock-file maintenance #15

Workflow file for this run

name: Fuzz
# The diffuser transforms attacker-controllable sector bytes. The libfuzzer
# target's invariant is "must not panic" over arbitrary length and content.
# Push/PR runs a short smoke pass; the scheduled job fuzzes for 10 minutes.
on:
push:
branches: [main]
pull_request:
schedule:
- cron: "0 4 * * 1" # Mondays 04:00 UTC
workflow_dispatch:
permissions:
contents: read
jobs:
fuzz:
name: Fuzz ${{ matrix.target }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [fuzz_decrypt]
defaults:
run:
working-directory: fuzz
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # nightly
with:
toolchain: nightly
components: rust-src
- run: cargo install cargo-fuzz
# Short smoke on push/PR; deep run on schedule/dispatch.
- name: Set duration
id: dur
run: |
if [ "${{ github.event_name }}" = "schedule" ] || [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "secs=600" >> "$GITHUB_OUTPUT"
else
echo "secs=45" >> "$GITHUB_OUTPUT"
fi
- name: Fuzz ${{ matrix.target }}
run: cargo +nightly fuzz run "${{ matrix.target }}" -- -max_total_time=${{ steps.dur.outputs.secs }} -rss_limit_mb=4096
- name: Upload crash artifacts
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: fuzz-crash-${{ matrix.target }}
path: fuzz/artifacts/
if-no-files-found: ignore