{"id":15346686,"url":"https://github.com/centic9/csv-fuzz","last_synced_at":"2025-08-15T23:09:44.238Z","repository":{"id":146167668,"uuid":"448292676","full_name":"centic9/csv-fuzz","owner":"centic9","description":"Use Jazzer to perform fuzzy testing of Apache Commons CSV","archived":false,"fork":false,"pushed_at":"2025-06-27T05:57:55.000Z","size":248,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-08T11:53:06.018Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/centic9.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"centic9"}},"created_at":"2022-01-15T13:58:24.000Z","updated_at":"2025-06-27T05:57:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"7878bb8a-71f7-4f42-8c5f-a848558bfd8a","html_url":"https://github.com/centic9/csv-fuzz","commit_stats":{"total_commits":57,"total_committers":1,"mean_commits":57.0,"dds":0.0,"last_synced_commit":"833a971769c7d8c94b53d8668a8a2046416118d1"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/centic9/csv-fuzz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fcsv-fuzz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fcsv-fuzz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fcsv-fuzz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fcsv-fuzz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/centic9","download_url":"https://codeload.github.com/centic9/csv-fuzz/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fcsv-fuzz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270644754,"owners_count":24621332,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T11:26:01.258Z","updated_at":"2025-08-15T23:09:44.218Z","avatar_url":"https://github.com/centic9.png","language":"Java","funding_links":["https://github.com/sponsors/centic9"],"categories":[],"sub_categories":[],"readme":"This is a small project for fuzzing [Apache Commons CSV](https://commons.apache.org/proper/commons-csv/) with the [jazzer](https://github.com/CodeIntelligenceTesting/jazzer) fuzzing tool.\n\nSee [Fuzzing](https://en.wikipedia.org/wiki/Fuzzing) for a general description of the theory behind fuzzy testing.\n\nBecause Java uses a runtime environment which does not crash on invalid actions of an \napplication (unless native code is invoked), Fuzzing of Java-based applications  \nfocuses on the following:\n\n* verify if only expected exceptions are thrown\n* verify any JNI or native code calls \n* find cases of unbounded memory allocations\n\nApache Commons CSV does not use JNI or native code, so the fuzzing target\ntries to trigger unexpected exceptions and unbounded memory allocations.\n\n# How to fuzz\n\nBuild the fuzzing target:\n\n    ./gradlew shadowJar\n\nCopy over the corpus of test-files from Apache Commons Compress sources\n\n    cp -a /opt/commons-csv/src/test/resources corpus/\n\nCreate a directory for the \"complex\" fuzzing\n\n    mkdir -p corpusComplex\n\nYou can add documents from other testing-corpora as well. Valid documents\nas well as slightly broken ones are good sources as this helps the fuzzer \nto come up with interesting new cases. \n\nDownload Jazzer from the [releases page](https://github.com/CodeIntelligenceTesting/jazzer/releases), \nchoose the latest version and select the file `jazzer-\u003cos\u003e-\u003cversion\u003e.tar.gz`\n\nUnpack the archive:\n\n    tar xzf jazzer-*.tar.gz\n\nInvoke the fuzzing:\n\nWith only fuzzing the CSV input file based on input files:\n\n    ./jazzer --cp=build/libs/csv-fuzz-all.jar --instrumentation_includes=org.apache.commons.** --target_class=org.dstadler.csv.fuzz.Fuzz -rss_limit_mb=4096 corpus\n\nWhen also fuzzing the CSV format via \"complex\" fuzzing (cannot use an external corpus):\n\n    ./jazzer --cp=build/libs/csv-fuzz-all.jar --instrumentation_includes=org.apache.commons.** --target_class=org.dstadler.csv.fuzz.FuzzComplex -rss_limit_mb=4096 corpusComplex\n\nIn this mode Jazzer will stop whenever it detects an unexpected exception \nor crashes.\n\nYou can use `--keep_going=10` to report a given number of exceptions before stopping.\n\nSee `./jazzer` for options which can control details of how Jazzer operates.\n\n# License\n\nCopyright 2023 Dominik Stadler\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentic9%2Fcsv-fuzz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcentic9%2Fcsv-fuzz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentic9%2Fcsv-fuzz/lists"}