diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml new file mode 100644 index 0000000..74812bd --- /dev/null +++ b/.github/workflows/fuzz.yml @@ -0,0 +1,42 @@ +name: Fuzz + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + fuzzing: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + target: + - fuzz_amf0_body + - fuzz_amf0_element_array + - fuzz_amf0_header + - fuzz_amf3_body + - fuzz_amf3_int_signed + - fuzz_amf3_int_unsigned + - fuzz_amf3_string + steps: + - uses: actions/checkout@v4 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: nightly + + - name: Install cargo-fuzz + run: cargo install cargo-fuzz + + - name: Run Fuzzing + run: | + cargo fuzz run ${{ matrix.target }} ${{ contains(matrix.target, 'amf3') && '--features amf3' || ''}} -- -max_total_time=180 + + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: ${{ matrix.target }} + path: fuzz/artifacts/ \ No newline at end of file diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index b4ddc16..af42e6f 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -13,6 +13,9 @@ cargo-fuzz = true libfuzzer-sys = "0.4.7" flash-lso = { path = "../flash-lso", default-features = false} +[features] +amf3 = ["flash-lso/amf3"] + # Prevent this from interfering with workspaces [workspace] members = ["."]