Skip to content

chore(rec-13/14): remove dead .github/oss-fuzz/ wrapper#84

Merged
CryptoJones merged 1 commit into
masterfrom
chore/remove-oss-fuzz-wrapper
May 27, 2026
Merged

chore(rec-13/14): remove dead .github/oss-fuzz/ wrapper#84
CryptoJones merged 1 commit into
masterfrom
chore/remove-oss-fuzz-wrapper

Conversation

@CryptoJones

Copy link
Copy Markdown
Owner

Follow-up to #83. Now that google/oss-fuzz#15545 is closed (soft policy reject — "we prefer projects with large user bases"), the .github/oss-fuzz/ tree is dead scaffolding with no purpose outside the rejected submission.

What this removes

The four wrapper files were 100% Google-infrastructure-specific:

  • Dockerfile built against gcr.io/oss-fuzz-base/base-builder
  • build.sh consumed $SRC / $LIB_FUZZING_ENGINE / $OUT and still carried "Copyright 2026 Google LLC" per dpebot's header-check
  • project.yaml was the OSS-Fuzz manifest format (primary_contact, auto_ccs, sanitizers, fuzzing_engines)
  • README.md documented the submission staging workflow

What stays

Local fuzzing is unaffected. The actual harnesses (fuzz_xml.cc, fuzz_marshal.cc) and their build recipe live at Ghidra/Features/Decompiler/src/decompile/cpp/fuzz/ and are standalone — Makefile.fuzz's header already states "this Makefile is for local reproduction; OSS-Fuzz substitutes its own engine."

Dangling-reference cleanup

  • README.md Rec 13 row — drop [oss-fuzz project](.github/oss-fuzz/) link; add parenthetical noting the submission rejection
  • Ghidra/.../fuzz/README.md — drop the "Build (OSS-Fuzz)" section, the OSS-Fuzz step in "Adding a new harness," and the seeds-section claim about build.sh packaging seed corpora
  • CHANGELOG.md [Unreleased] Rec 13/14 — append a "Wrapper rip-out" bullet

Out of scope (separate follow-ups)

  • Rewriting docs/security/OSS_FUZZ.md and docs/security/LOADER_FUZZING.md — both still carry the "submit to OSS-Fuzz" framing and need a separate doc-touch-up PR
  • Wiring fuzz_xml / fuzz_marshal into .github/workflows/decompiler-sanitizers.yml for continuous fuzzing — its own CI-design question
  • Reconciling older SprintPlanning.md Sprint 4/5/6 "Open" rows that still mention OSS-Fuzz submission — pre-existing unreconciled sprint plans

Test plan

  • grep -rn "\\.github/oss-fuzz" --include="*.yml" --include="*.yaml" --include="*.sh" --include="*.gradle" --include="Makefile*" finds zero hits in build / CI / scripts — no build path depended on this directory
  • Decompiler harnesses still build via Makefile.fuzz (no change to that recipe)
  • Diff is -145 / +10 lines, all docs/wrapper only

Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/

google/oss-fuzz#15545 was rejected 2026-05-26 (see [Unreleased] in
CHANGELOG.md, prior commit). The `.github/oss-fuzz/` tree was 100%
Google-infrastructure scaffolding with zero value outside the
submission:

- `Dockerfile` built against `gcr.io/oss-fuzz-base/base-builder`
- `build.sh` consumed `$SRC` / `$LIB_FUZZING_ENGINE` / `$OUT`
  (OSS-Fuzz's env-var contract); the script even still carried the
  "Copyright 2026 Google LLC" header that dpebot's `header-check`
  required
- `project.yaml` was the OSS-Fuzz project manifest format
  (`primary_contact`, `auto_ccs`, `sanitizers`, `fuzzing_engines`)
- `README.md` documented the staging workflow for the submission

Local fuzzing is unaffected. The actual harnesses (`fuzz_xml.cc`,
`fuzz_marshal.cc`) and their build recipe (`Makefile.fuzz`) live at
`Ghidra/Features/Decompiler/src/decompile/cpp/fuzz/` and are
standalone — `Makefile.fuzz`'s header explicitly says it's for
local reproduction and that OSS-Fuzz substituted its own engine.

Cross-references updated to avoid dangling links after deletion:

- `README.md` Rec 13 row drops the `[oss-fuzz project](.github/oss-fuzz/)`
  link and adds a parenthetical noting the submission was rejected
- `Ghidra/.../fuzz/README.md` drops the "Build (OSS-Fuzz)" section,
  the OSS-Fuzz step in the "Adding a new harness" checklist, and the
  Seeds-section claim about `build.sh` packaging seed corpora
  automatically (no longer true)
- `CHANGELOG.md` `[Unreleased]` Rec 13/14 section gets a new
  "Wrapper rip-out" bullet recording the file removals and the
  cross-reference cleanup

NOT touched in this PR (deliberate scope limit, follow-up):

- `docs/security/OSS_FUZZ.md` — the integration-plan doc retains
  its "submit to OSS-Fuzz" framing and a needs-rewrite header
- `docs/security/LOADER_FUZZING.md` — same, parallel to Rec 14
- Wiring `fuzz_xml` / `fuzz_marshal` into `.github/workflows/decompiler-sanitizers.yml`
  for continuous-fuzzing in our own CI — its own CI-design question
- Older `SprintPlanning.md` Sprint 4/5/6 "Open" rows that still
  list "submit `.github/oss-fuzz/` to google/oss-fuzz" — those are
  pre-existing unreconciled historical sprint plans

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@CryptoJones
CryptoJones merged commit c67ffc8 into master May 27, 2026
13 checks passed
@CryptoJones
CryptoJones deleted the chore/remove-oss-fuzz-wrapper branch May 27, 2026 04:58
CryptoJones added a commit that referenced this pull request May 27, 2026
Three pre-existing unreconciled "submit .github/oss-fuzz/ to
google/oss-fuzz" rows still listed as open in SprintPlanning.md's
Sprint 4, Sprint 5, and Sprint 6 sections. Strike them through with
a one-line note pointing back to Sprint 10's canonical rejection row
(which carries DavidKorczynski's full quote).

Companion to PRs #83 (rejection-recording) and #84 (wrapper rip-out);
brings SprintPlanning.md fully consistent so the document reads
honestly end-to-end. No code paths affected.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CryptoJones added a commit that referenced this pull request May 27, 2026
…state (#86)

Self-audit caught: when PR #84 deleted the .github/oss-fuzz/ wrapper,
the CHANGELOG bullet was updated to say only the harnesses survived,
but SprintPlanning.md's Sprint 10 canonical row was left with the
pre-rip-out wording —

    Re-scoped: the in-tree `.github/oss-fuzz/` files + the
    `fuzz_xml` / `fuzz_marshal` harnesses stay as our own
    continuous-fuzzing infrastructure …

PRs #85's Sprint 4/5/6 strike-outs all said "see Sprint 10 canonical
row" — so the inconsistency propagated by reference. Rewrite the
Sprint 10 row to match the post-PR-#84 reality:

- Only the harnesses (at Ghidra/Features/Decompiler/src/decompile/cpp/fuzz/)
  stay; they run locally via Makefile.fuzz.
- The .github/oss-fuzz/ wrapper directory is explicitly noted as
  deleted in PR #84.

CHANGELOG `[Unreleased]` gets a "Self-audit fix-up" bullet recording
that this PR corrects the previously-shipped inconsistency, so the
audit trail is honest about the slip.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CryptoJones added a commit that referenced this pull request May 27, 2026
Sprint 10 is code-closed — only Aaron-UI-action items
(Automatic Dependency Submission workflow, immutable-releases
toggle) and the deferred Stage 3 step 6 `-Werror` + ErrorProne
ratchet (its own sprint) remain. Cut v26.1.11 to ship the
[Unreleased] backlog accumulated since v26.1.10:

- Rec 31 RAII Stage 2A complete (#46 marshal.cc buffer ownership)
- Rec 31 RAII Stage 2B complete (#51, #73 xml.cc lvalue +
  global_scan lifetime)
- Rec 31 RAII Stage 2C complete (#77 stack-local, #78 Element
  parse-tree, #82 Document return-value, #87 audit-gate)
- Rec 31 RAII Stage 3 first migrations (#89 cover.cc gate,
  #90 comment.cc migration + gate)
- Rec 28 closeout — `ignoreAudit` Stage 2 strict-by-default (#43)
- Rec 13/14 OSS-Fuzz upstream submission attempted + rejected;
  wrapper deleted, harnesses retained for in-tree fuzzing
  (google/oss-fuzz#15545, #48, #49, #84)
- Rec 20 RMI VMARG removed from launch.properties (#81)
- release.yml Windows zip glob fix (#88) — `_windows_*` →
  `_win_*` so `getCurrentPlatformName()`'s `win_x86_64` token
  matches. Unblocks the matrix's `publish_release` job that's
  been silently skipped since v26.1.6.

**v26.1.11 is the first release expected to actually appear on
the public Releases page.** v26.1.6/8/9/10 are backlogged in
drafts under "Immutable Releases" tag lockout; not recoverable
under their original tags.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant