Skip to content

fuzzers: add opj_compress_fuzzer for J2K/JP2 encode path#1645

Open
XananasX7 wants to merge 1 commit into
uclouvain:masterfrom
XananasX7:ossfuzz/opj-compress-fuzzer
Open

fuzzers: add opj_compress_fuzzer for J2K/JP2 encode path#1645
XananasX7 wants to merge 1 commit into
uclouvain:masterfrom
XananasX7:ossfuzz/opj-compress-fuzzer

Conversation

@XananasX7

Copy link
Copy Markdown

Summary

The existing OSS-Fuzz harnesses cover only decompression:

  • opj_decompress_fuzzer_J2K.j2k / .jph codestream decode
  • opj_decompress_fuzzer_JP2.jp2 JP2 container decode

The encode path (src/lib/openjp2/j2k.c, jp2.c, tcd.c) has no OSS-Fuzz coverage.

New harness: tests/fuzzers/opj_compress_fuzzer.cpp

Derives image parameters (width, height, components, lossy flag, J2K vs JP2) from fuzz input, builds an opj_image_t with fuzz-derived pixel data, then runs a full encode via opj_setup_encoder → opj_start_compress → opj_encode → opj_end_compress, writing output to an in-memory write-stream using custom callbacks (matching the pattern of existing decompress fuzzers).

Covers: DWT forward transform, tier-1/tier-2 encoding, rate-distortion optimisation, JP2 box serialisation in jp2.c.

@XananasX7

Copy link
Copy Markdown
Author

Friendly ping — happy to address any review comments. Thank you!

@rouault

rouault commented Jun 20, 2026

Copy link
Copy Markdown
Collaborator

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.

2 participants