Skip to content

fuzz: weekly regression seeds (2026-05-03)#7

Merged
lilith merged 1 commit into
mainfrom
fuzz/weekly-2026-05-03
May 4, 2026
Merged

fuzz: weekly regression seeds (2026-05-03)#7
lilith merged 1 commit into
mainfrom
fuzz/weekly-2026-05-03

Conversation

@lilith

@lilith lilith commented May 3, 2026

Copy link
Copy Markdown
Member

Weekly automated fuzz sweep for webpx.

New crashes

Target Seed Size Repro?
decode_static decode_static-crash-b2b18e4b4545 12 B already-fixed
limits_boundaries limits_boundaries-crash-9947b87f07e9 70 B already-fixed

Both are OOM crashes (exit status: 71). The inputs trick WebPAllocateDecBuffer into attempting an ~8 GB allocation (malloc(8617814172)) via crafted width/height fields. The stable regression harness (fuzz_regression_seeds_do_not_panic) passes for both — the Rust wrapper returns an Err rather than panicking, and the decode_static harness has a MAX_PIXEL_BYTES guard (256 MB) that short-circuits before reaching the allocation site. The OOM only fires under libFuzzer's memory-limit interceptor.

Seeds are kept as cheap regression coverage to ensure the graceful-error path stays in place.

Per-target stats

Target Execs Coverage (cov/ft) New seeds
decode_animation 2,752,393 171/280 0
decode_into 264,398 190/231 0
decode_static ~730,000 (OOM) 183/230 1
decode_streaming 2,618,865 241/592 0
decoder_builder 1,273,046 346/532 0
dim_extremes 3,836,862 268/417 0
encode_roundtrip 654,076 354/434 0
image_info 302,350,270 41/42 0
limits_boundaries ~216,000 (OOM) 387/563 1
mux_metadata 65,216,418 130/187 0
stride_extremes 3,109,840 355/574 0
yuv_planes 32,297,120 237/259 0

All targets ran for 600 s wall time (4 targets in parallel per batch on a 4-core machine, 3 batches total). No timeouts exceeded the 12-minute ceiling.

Notes

  • 4 new fuzz targets beyond the expected 8 were discovered (dim_extremes, limits_boundaries, stride_extremes, yuv_planes) — all swept.
  • decode_static and limits_boundaries exited early (before the 600 s timer fired) due to the OOM condition; exec counts are approximate from the last corpus pulse line in the log.
  • No oversized minimizations (both POCs fit well under the 8 KB ceiling: 12 B and 70 B).
  • cargo fuzz tmin produced multiple intermediate files; the smallest was selected in each case.

https://claude.ai/code/session_01L1AKVU8TbCYXhZc6QYGgMh


Generated by Claude Code

Found by libFuzzer (OOM via WebPAllocateDecBuffer with crafted dimensions).
Both seeds pass the regression harness; the OOM only triggers under
libFuzzer's memory-limit mode, not in the stable test harness.

https://claude.ai/code/session_01L1AKVU8TbCYXhZc6QYGgMh
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.51%. Comparing base (27b8012) to head (830c253).

Additional details and impacted files
@@            Coverage Diff             @@
##             main       #7      +/-   ##
==========================================
+ Coverage   77.24%   77.51%   +0.27%     
==========================================
  Files          18       18              
  Lines        4390     4390              
==========================================
+ Hits         3391     3403      +12     
+ Misses        999      987      -12     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@lilith lilith merged commit be02686 into main May 4, 2026
29 checks passed
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.

3 participants