diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml new file mode 100644 index 0000000..7a8b28e --- /dev/null +++ b/.github/workflows/cifuzz.yml @@ -0,0 +1,53 @@ +name: CIFuzz + +on: + push: + branches: + - master + paths: + - ".github/workflows/cifuzz.yml" + - "fuzz/**" + - "multipart/**" + - "pyproject.toml" + - "python_multipart/**" + - "uv.lock" + +permissions: {} + +jobs: + # https://google.github.io/oss-fuzz/getting-started/continuous-integration/ + Fuzzing: + runs-on: ubuntu-latest + + permissions: + security-events: write + + steps: + - name: Build Fuzzers + id: build + uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@675ddfb89ae1c614f1dfa99d18b91cd6d1d6b88b # master 2026-04-10 + with: + oss-fuzz-project-name: "python-multipart" + language: python + + - name: Run Fuzzers + uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@675ddfb89ae1c614f1dfa99d18b91cd6d1d6b88b # master 2026-04-10 + with: + oss-fuzz-project-name: "python-multipart" + language: python + fuzz-seconds: 600 + output-sarif: true + + - name: Upload Crash + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + if: failure() && steps.build.outcome == 'success' + with: + name: artifacts + path: ./out/artifacts + + - name: Upload Sarif + if: always() && steps.build.outcome == 'success' + uses: github/codeql-action/upload-sarif@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3 + with: + sarif_file: cifuzz-sarif/results.sarif + checkout_path: cifuzz-sarif