Skip to content

sleuthkit: build fuzzer for the XPRESS (MS-XCA) decompressors - #15993

Open
MP-GOWTHAM wants to merge 1 commit into
google:masterfrom
MP-GOWTHAM:sleuthkit-xpress-fuzzer
Open

sleuthkit: build fuzzer for the XPRESS (MS-XCA) decompressors#15993
MP-GOWTHAM wants to merge 1 commit into
google:masterfrom
MP-GOWTHAM:sleuthkit-xpress-fuzzer

Conversation

@MP-GOWTHAM

Copy link
Copy Markdown

Adds a libFuzzer target for the XPRESS (MS-XCA) decompressors that were added to Sleuth Kit in sleuthkit/sleuthkit#3531:

  • ossfuzz/tsk_xpress_fuzzer.cc (in the sleuthkit repo) drives both variants: byte 0 selects plain LZ77 or LZ77+Huffman, bytes 1-4 carry the uncompressed size for the Huffman variant, the rest is the compressed stream.
  • The build is conditional: the fuzzer only builds once tsk/fs/xpress.c exists in the upstream clone, so this PR does not break the project if the codec PR has not landed yet.
  • A seed corpus (16 inputs) derived from the MS-XCA test corpus in unit_tests/base/xpress_test_data.h is zipped into the output.

Verified locally: the fuzzer input layout decodes all 16 corpus vectors to their exact sizes (gcc, -Wall -Wextra clean).

@google-cla

google-cla Bot commented Aug 13, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@github-actions

Copy link
Copy Markdown

MP-GOWTHAM is a new contributor to projects/sleuthkit. The PR must be approved by known contributors before it can be merged. The past contributors are: arthurscchan, simsong, joachimmetz, DonggeLiu, inferno-chromium, alsophian

@MP-GOWTHAM
MP-GOWTHAM force-pushed the sleuthkit-xpress-fuzzer branch from 9efc3ba to 0ab0f38 Compare August 13, 2026 16:57

@DavidKorczynski DavidKorczynski left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we remove the seed files from this repository? Store them upstream or something similar. Also, let us know when upstream lands the new harness and it would be great if you can get maintainer approval as well.

Builds ossfuzz/tsk_xpress_fuzzer.cc from the sleuthkit checkout once the
codec lands upstream (sleuthkit/sleuthkit#3531); skips the target if the
codec is not present, so the project does not regress in the meantime.

Seed corpus was removed per review: the vectors live in the upstream
test suite (unit_tests/base/xpress_test_data.h) and can be reused from
there once the upstream fuzzer lands (sleuthkit/sleuthkit#3532).
@MP-GOWTHAM
MP-GOWTHAM force-pushed the sleuthkit-xpress-fuzzer branch from 0ab0f38 to 6c4eb79 Compare August 14, 2026 13:31
@MP-GOWTHAM

Copy link
Copy Markdown
Author

All review points addressed in the updated commit (6c4eb79):

  1. Seed files removed from this repository - the 16 corpus vectors (and the zip step that packaged them) are gone from the PR. They live upstream in the sleuthkit test suite (unit_tests/base/xpress_test_data.h) and can be reused from there for the seed corpus once the upstream harness lands.
  2. Upstream harness status: Add XPRESS (MS-XCA) plain LZ77 and LZ77+Huffman decoders sleuthkit/sleuthkit#3531 (codec) and [poppler] Compile and use openjpeg2 #3532 (ossfuzz/tsk_xpress_fuzzer.cc harness) are both still open. The build here stays conditional on tsk/fs/xpress.c being present, so nothing regresses until they land; I will ping here the moment they do.
  3. Maintainer approval: I have pinged the sleuthkit maintainers for an approval of the upstream PRs (Propose ClickHouse to oss-fuzz #3531/[poppler] Compile and use openjpeg2 #3532) which serve as the base for this one, and will relay their approval here.

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