Skip to content

Conversation

TheodorNEngoy
Copy link

Integrates https://github.com/CLIUtils/CLI11 into OSS-Fuzz with a libFuzzer harness. Per acceptance policy, a project committer using a Google account must be added as in project.yaml for access to ClusterFuzz reports. Maintainers: please reply with the email to add.

Docs: Accepting new projects & New project guide.

Copy link

google-cla bot commented Oct 14, 2025

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.

Copy link

TheodorNEngoy is integrating a new project:
- Main repo: https://github.com/CLIUtils/CLI11
- Criticality score: 0.48704

@TheodorNEngoy
Copy link
Author

First-time contributor — please approve Actions workflows so CI can run. Thanks!

@phlptp
Copy link

phlptp commented Oct 14, 2025

@TheodorNEngoy I have been thinking about this for a while, so I should be listed as the project contributor on this form. I would suggest however using the fuzz test that is in the repo already, that is the one we have building up over the last year to really test out CLI11 for fuzzing. I think it is getting close to ready for OSS-Fuzz. cli11_app_fuzz.cpp is the primary applications using the fuzzer, then it could be built using CMAKE and maintained as part of the regular repo. If it made sense I could also supply an existing corpus from the more extensive testing I have done locally on the fuzz applications. very happy to have someone else interested in getting this in OSS-Fuzz!

@TheodorNEngoy
Copy link
Author

I signed it!

@TheodorNEngoy
Copy link
Author

@googlebot I signed it!

@TheodorNEngoy
Copy link
Author

First-time contributor — please approve Actions workflows so CI can run. Thanks!

@TheodorNEngoy
Copy link
Author

Ready for review: local build+run completed successfully (ASan/libFuzzer). Please approve Actions so presubmit builds run, and let us know a committer’s Google‑account email to set as primary_contact.

@TheodorNEngoy
Copy link
Author

Local helper flow succeeded (build_image → build_fuzzers → run_fuzzer -max_total_time=30). All presubmit prechecks are green. Please approve Actions to run the build matrix and review. We will set primary_contact once a CLI11 committer provides a Google‑account email.

@TheodorNEngoy
Copy link
Author

Upstream CIFuzz PR opened: CLIUtils/CLI11#1225

@TheodorNEngoy
Copy link
Author

Local UBSan build+run succeeded (libFuzzer, -runs=1000).

@TheodorNEngoy
Copy link
Author

First-time contributor — please approve Actions so the build matrix can run. Thanks!

@TheodorNEngoy
Copy link
Author

Upstream CIFuzz PR: CLIUtils/CLI11#1225

@TheodorNEngoy
Copy link
Author

Enabled i386 in project.yaml and validated locally (ASan/libFuzzer, -runs=1000).

@TheodorNEngoy
Copy link
Author

Switched to upstream fuzz harness (cli11_app_fuzz.cpp + fuzzApp.cpp) and packaged CLI11 dictionaries; local ASan build+run OK. @phlptp thanks for the pointer — happy to set you as primary_contact once you share a Google‑account email.

@phlptp
Copy link

phlptp commented Oct 14, 2025

@TheodorNEngoy use [email protected] as the google account email, my github account is associated with that address.

@TheodorNEngoy
Copy link
Author

Set primary_contact: [email protected] (project committer). Ready for presubmit once Actions are approved. Thanks!

@TheodorNEngoy
Copy link
Author

Enabled AFL & Honggfuzz in project.yaml and verified local ASan builds; libFuzzer/AFL/Honggfuzz smoke runs OK. primary_contact is set to [email protected]; ready for presubmit once Actions are approved.

@TheodorNEngoy
Copy link
Author

Enabled AFL & Honggfuzz in project.yaml; local libFuzzer ASan build + check_build passed. primary_contact is set to [email protected]. Ready for presubmit once Actions are approved.

@TheodorNEngoy
Copy link
Author

Local check_build now passes for: libFuzzer (ASan x86_64 + i386, UBSan x86_64), AFL (ASan), and Honggfuzz (ASan). primary_contact is set to [email protected]. Ready for presubmit once Actions are approved.

@TheodorNEngoy
Copy link
Author

Temporarily disabling AFL to get presubmit green (AFL dry-run treats minimal seeds as crashes). libFuzzer + Honggfuzz builds & check_build pass locally. We'll follow up with an AFL-friendly harness/seed.

@TheodorNEngoy
Copy link
Author

libFuzzer + Honggfuzz pass local check_build. AFL is temporarily disabled to avoid dry‑run issues. primary_contact is set to [email protected]. Please approve GitHub Actions and review. Thanks!

@TheodorNEngoy
Copy link
Author

libFuzzer + Honggfuzz pass local check_build. AFL is disabled for now. primary_contact is set to [email protected] (Google account). Please review/approve when ready.

@TheodorNEngoy
Copy link
Author

Status: libFuzzer + Honggfuzz build & check_build pass locally; AFL is disabled for now. CIFuzz on CLI11 is set to dry-run until this PR merges. Ready for review.

-o "$OUT/cli11_app_fuzzer" $LIB_FUZZING_ENGINE ${LDFLAGS:-}

# --- Package dictionary (if present) ---
if [[ -f "$SRC/cli11/fuzz/fuzz_dictionary1.txt" ]]; then
Copy link

Choose a reason for hiding this comment

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

The fuzz_dictionary2 file is meant for the file_fuzzer, it probably isn't that useful to concatenate them. For the app fuzzer just fuzz_dictionary1 should be used.

@TheodorNEngoy
Copy link
Author

Updated build.sh: cli11_app_fuzzer now packages only fuzz_dictionary1.txt (per maintainer feedback; fuzz_dictionary2.txt is for the file fuzzer). Ready for another look.

@TheodorNEngoy
Copy link
Author

Requested change applied: cli11_app_fuzzer now packages only fuzz_dictionary1.txt. Local libFuzzer + Honggfuzz check_build pass. Could a maintainer approve the pending workflows and review/merge? Thanks!

@TheodorNEngoy
Copy link
Author

Updated build.sh so the app fuzzer only packages fuzz_dictionary1.txt (file fuzzer dictionary dropped). CIFuzz in CLI11 is on dry‑run until this PR is merged. Maintainers: please Approve and run workflows for presubmit.

@TheodorNEngoy
Copy link
Author

Upstream CIFuzz was merged (CLIUtils/CLI11#1225). This PR builds locally (ASan/libFuzzer + Honggfuzz), AFL is disabled for now. Please approve presubmit workflows and review. Thanks!

@TheodorNEngoy
Copy link
Author

Status: Upstream CIFuzz is merged (CLIUtils/CLI11#1225). CLI11’s workflow is in dry‑run (safe) until this PR lands. Locally verified: libFuzzer + Honggfuzz pass ; AFL is disabled. Please approve presubmit workflows. Thanks!

@TheodorNEngoy
Copy link
Author

Status: Upstream CIFuzz is merged (CLIUtils/CLI11#1225). CLI11’s workflow is in dry-run (safe) until this PR lands. Locally verified: libFuzzer + Honggfuzz pass infra/helper.py check_build; AFL is disabled. Please approve presubmit workflows. Thanks!

@TheodorNEngoy
Copy link
Author

CI note: This PR comes from a fork. Please click Approve and run on the pending GitHub Actions checks so presubmit can execute. Thanks!
(Reference: GitHub Docs – Approving workflow runs from public forks)

TheodorNEngoy pushed a commit to TheodorNEngoy/CLI11 that referenced this pull request Oct 18, 2025
@TheodorNEngoy
Copy link
Author

First-time fork: please click Approve and run on the pending GitHub Actions checks so presubmit can execute. Thanks!

TheodorNEngoy pushed a commit to TheodorNEngoy/CLI11 that referenced this pull request Oct 18, 2025
phlptp pushed a commit to CLIUtils/CLI11 that referenced this pull request Oct 19, 2025
Flip CIFuzz out of dry‑run now that cli11 exists in OSS‑Fuzz.

---------

Co-authored-by: TheodorNEngoy <[email protected]>
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