This is the initial development release of cifuzz.
Features tl:dr
- Easy C/C++ Fuzzing including CMake integration (testet with CLion and VS Code)
- Generate Coverage Reports for fuzz test
- Documentation
What's Changed
- Add the missing command stubs... by @jochil in #1
- Switch to import path code-intelligence.com/cifuzz by @fmeum in #3
- test: add basic integration test incl. ci workflow by @jochil in #2
- feat(init): create config file by @jochil in #4
- improve output + error handling by @jochil in #6
- refactor: update package structure by @jochil in #7
- ci: skip integration tests on push by @jochil in #5
- Simplify CI setup by @fmeum in #9
- Add a replayer by @fmeum in #10
- Support directories as replayer inputs by @fmeum in #11
- implement first version of the create command by @jochil in #8
- move commands into subpackages by @jochil in #12
- Automatically generate command documentation and update wiki by @jochil in #14
- Support -C flag to change directory by @adombeck in #15
- remove jazzer by @jochil in #68
- Run tests with -v flag by @adombeck in #66
- chore(deps): bump github.com/gookit/color from 1.5.0 to 1.5.1 by @dependabot in #73
- Run
make fmt
by @adombeck in #72 - Fix error printing by @adombeck in #69
- Improve terminal colors by @adombeck in #67
- chore: move testdata to integration directory by @jochil in #70
- Remove bazel dependency by @adombeck in #71
- feat: support c/c++ language server (ccls) by @jochil in #74
- finder: Fix cifuzz include path by @adombeck in #75
- feat: make sure that a newly created fuzz target is compilable by @jochil in #77
- fix: no finding when crashing on empty input (CLI-226) by @jochil in #79
- Handle expected error that cifuzz.yaml can't be found by @adombeck in #78
- improve documentation by @jochil in #58
- chore(deps): bump github.com/stretchr/testify from 1.7.2 to 1.7.3 by @dependabot in #81
- Fuzz test shell completion by @adombeck in #76
- Move the runner package integration tests to the runner package by @adombeck in #80
- chore(deps): bump github.com/stretchr/testify from 1.7.3 to 1.7.4 by @dependabot in #84
- chore(deps): bump github.com/pterm/pterm from 0.12.41 to 0.12.42 by @dependabot in #85
- chore(deps): bump github.com/spf13/cobra from 1.4.0 to 1.5.0 by @dependabot in #83
- installer: Use a better installation directory for the cmake config by @adombeck in #88
- Add Code Intelligence logo to README by @HenrichN in #89
- Simplify cifuzz create by @adombeck in #86
- Fix "unexpected exit code" error printed when terminated via signal by @adombeck in #91
- chore(deps): bump github.com/stretchr/testify from 1.7.4 to 1.7.5 by @dependabot in #94
- chore(deps): bump github.com/stretchr/testify from 1.7.5 to 1.8.0 by @dependabot in #95
- executil: Fix race when using CommandContext by @adombeck in #87
- Autocompletion in dialogs by @adombeck in #90
- Add
cifuzz run
integration test for CMake project by @adombeck in #92 - readme: Mention that LLVM >= 11 is required by @fmeum in #97
- fileutil: Fix PrettifyPath for paths such as ..some/dir by @fmeum in #100
- run: Use CMake integration info file to find fuzz test executable by @fmeum in #101
- run: Improve fuzz test executable finding heuristic by @fmeum in #99
- cleanup: remove tmp folder by @florianGla in #103
- runner: Print startup stderr in case of an unexpected exit error by @fmeum in #98
- integration-tests: Use deterministic random seed by @adombeck in #106
- util: Handle more special cases in PrettifyPath by @fmeum in #102
- envutil: Use os.PathListSeparator by @adombeck in #107
- runner: Fix startup output printed as bytes by @adombeck in #109
- cmake: Emit information about transitive runtime deps of fuzz tests by @fmeum in #64
- integration-tests: Print fuzzer output to ease debugging by @adombeck in #113
- Call fsync after copying by @adombeck in #111
- cmake: Emit cache args in deterministic order and remove spaces by @fmeum in #114
- installer: Execute sync(1) after installation by @adombeck in #118
- integration-tests: fsync changes to fuzz test before invoking CMake by @fmeum in #104
- Ensure that seeds dir paths are absolute by @adombeck in #112
- docs: replace "fuzz target" with "fuzz test" for user facing docs by @jochil in #117
- dialog: Fix InputFilename including output printed by the shell by @adombeck in #115
- install: Fix relative install dir by @florianGla in #120
- fix: adjust target names after renaming fuzz test by @jochil in #123
- runner tests: Log to buffer instead modifying os.Stderr by @adombeck in #124
- Implement cifuzz bundle by @fmeum in #110
- add gocritic linter by @jochil in #125
- integration-tests: Avoid make not rebuilding fuzz test by @adombeck in #122
- Revert "TMP: integration-tests: Close files eagerly" by @fmeum in #130
- Revert commits which call sync or fsync by @adombeck in #131
- runner tests: Fix issues when running tests in parallel by @adombeck in #132
- Run runner tests in parallel by @adombeck in #126
- cmake: Print stderr on exec.Cmd failure by @fmeum in #134
- Include seed directory in artifact bundles by @fmeum in #121
- Add external libraries to fuzzing artifact archives by @fmeum in #133
- log: Make log.Error print the error message if no message is provided by @adombeck in #140
- executil: Do not print a stack trace for ExitErrors by @fmeum in #138
- cmake: Fix for projects that don't enable the C language by @fmeum in #139
- bundle: Allow bundling multiple or all fuzz tests by @fmeum in #137
- run: Always use directory below .cifuzz-corpus as generated corpus dir by @adombeck in #136
- cifuzz.h: Suppress unused argument warning for FUZZ_TEST_SETUP by @fmeum in #141
- dialog: Don't ask for file path in dialogs by @adombeck in #143
- integration-tests: Enable on Windows by @fmeum in #96
- Make cobra return an IncorrectUsageError by @adombeck in #147
- cmake: Ship FuzzedDataProvider by @fmeum in #148
- improve documentation by @jochil in #135
- store crashing input to
.cifuzz-findings
by @jochil in #144 - Fix include path by @adombeck in #150
- Fix integration test on windows by @adombeck in #152
- improve build system instructions by @0roman in #153
- integration-tests: Limit runs rather than time by @fmeum in #154
- bundle: Add a coverage build to the archive by @fmeum in #145
- util: Don't fail when trying to kill an already terminated process by @fmeum in #155
- bundle: Set build_dir to the project rather than the build dir by @fmeum in #157
- CLI-164: automatic e2e testing for supported operating systems by @jochil in #82
- flogla/add crashing input to seed corpus by @florianGla in #119
- Create CODEOWNERS by @fmeum in #158
- installer: Fix race when running multiple installers in parallel by @adombeck in #160
- Use viper to read cifuzz.yaml by @adombeck in #146
- run: Suggest running without sandboxing by @adombeck in #161
- Fix building with unknown build system by @adombeck in #151
- integration-tests: Fix incorrect argument passed to libFuzzer by @adombeck in #163
- make minimum version in example match the README by @vargen in #164
- runner: Avoid printing "libminijail: child process exited with status" by @adombeck in #162
- Explain sandboxing feature in README by @adombeck in #165
- run: Fix "Starting from enpty corpus" printed by @adombeck in #166
- parser: Refactor away error-prone err == nil check by @fmeum in #168
- minijail: Fix regex in output filter by @adombeck in #171
- build(deps): bump github.com/pterm/pterm from 0.12.42 to 0.12.44 by @dependabot in #172
- cmake: Build the replayer with the fuzz test by @fmeum in #169
- all: Let the caller handle ExecErrors by @adombeck in #170
- Adjust description of use-sandbox flag (added missing "use-") by @pnoltof in #175
- build(deps): bump github.com/pterm/pterm from 0.12.44 to 0.12.45 by @dependabot in #177
- Rename "unknown" build system to "other" by @adombeck in #178
- refactor: drop promptui in favor of pterm by @jochil in #173
- Add link to sandboxing doc to sandboxing message by @adombeck in #174
- root: Add version flag by @florianGla in #179
- cmake: Represent coverage builds as a combination of engine and sanitizer by @fmeum in #181
- Add coverage command by @adombeck in #176
- run: Fix default seed corpus not used by @adombeck in #167
- examples/make: Add libapi.so to .gitignore by @adombeck in #183
- Automatically copy crashing input by @adombeck in #182
- Highlight notes by @adombeck in #185
- fix(docs): give write permission to docs pipeline by @jochil in #186
- build installer by @florianGla in #180
- release pipelines by @jochil in #184
New Contributors
- @florianGla made their first contribution in #103
- @0roman made their first contribution in #153
- @vargen made their first contribution in #164
- @pnoltof made their first contribution in #175
Full Changelog: https://github.com/CodeIntelligenceTesting/cifuzz/commits/v0.1.0