[tmux] add 6 additional fuzz harnesses#15472
Open
cglosner wants to merge 3 commits into
Open
Conversation
Adds 18 additional fuzz harnesses (6 targets x 3 generation approaches) covering cmd-parse, format, input-parse, layout-parse, style, and utf8. Targets named <target>-<category>: *-manual: hand-written *-llm: LLM-enhanced with coverage hints *-fuzzgen: FuzzedDataProvider-style structured input The harness sources are vendored under projects/tmux/tmux-oss-fuzz/ and built against tmux's already-compiled object files. The in-tree input-fuzzer continues to be built and shipped unchanged.
Replaces the previous 18-harness set with one harness per parser/processor surface, chosen as the highest-coverage variant from comparative evaluation: input-parse-fuzzer-extra (LLM-enhanced) cmd-parse-fuzzer-extra (LLM-enhanced) layout-parse-fuzzer-extra (manual) utf8-fuzzer-extra (manual) format-fuzzer-extra (manual) style-fuzzer-extra (LLM-enhanced) Dockerfile pins the tmux clone to --branch master so every build runs against current upstream. utf8-fuzzer.c also fixed to only call utf8_from_data() when utf8_fromwc() returned UTF8_DONE, removing a harness-side fatalx() previously surfaced by check_build.
Renames the six vendored fuzz harnesses to <target>-fuzzer-extra.c and places them in a single tmux-oss-fuzz/harnesses/ directory (no manual/ or llm_generated/ subdirectories). build.sh now iterates over the target list directly.
|
cglosner is a new contributor to projects/tmux. The PR must be approved by known contributors before it can be merged. The past contributors are: yf0h, DonggeLiu, snizovtsev, inferno-chromium |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds six additional fuzz targets to the tmux project, one per parsing/processing surface that the existing in-tree fuzzer (
input-fuzzer) does not directly cover.input-parse-fuzzer-extratmux-oss-fuzz/harnesses/input-parse-fuzzer-extra.cinput_parse_buffer()cmd-parse-fuzzer-extratmux-oss-fuzz/harnesses/cmd-parse-fuzzer-extra.ccmd_parse_from_buffer()layout-parse-fuzzer-extratmux-oss-fuzz/harnesses/layout-parse-fuzzer-extra.clayout_parse()utf8-fuzzer-extratmux-oss-fuzz/harnesses/utf8-fuzzer-extra.cutf8_*familyformat-fuzzer-extratmux-oss-fuzz/harnesses/format-fuzzer-extra.cformat_expand()style-fuzzer-extratmux-oss-fuzz/harnesses/style-fuzzer-extra.cstyle_parse()The four existing in-tree fuzzers (
input-fuzzer,cmd-parse-fuzzer,format-fuzzer,style-fuzzer) are unchanged.What changed
projects/tmux/Dockerfile: pins the tmux clone to--branch master --depth 1so every CI run rebuilds against current upstream, including in-flight bug fixes. AddsCOPY tmux-oss-fuzz $SRC/tmux-oss-fuzz/to vendor the additional harness sources.projects/tmux/build.sh: after the existingmake checkbuilds the in-tree fuzzers, iterates over the six target names and compiles each extra harness against tmux's already-compiled object files. Includestmux.obecause tmux's--enable-fuzzingbuild path marksmain()as weak — libFuzzer'smainwins, andtmux.oprovides global helpers (clean_name,getversion,setblocking, …) referenced by the other objects.projects/tmux/project.yaml: trimmed of commented-out template lines; sanitizers and engines unchanged.projects/tmux/tmux-oss-fuzz/harnesses/: new directory containing the six harness sources.