{"id":15346689,"url":"https://github.com/centic9/hash4j-fuzz","last_synced_at":"2026-02-21T11:30:58.901Z","repository":{"id":146167748,"uuid":"477771130","full_name":"centic9/hash4j-fuzz","owner":"centic9","description":"Use Jazzer to perform fuzzy testing of hash4j","archived":false,"fork":false,"pushed_at":"2025-11-23T20:52:04.000Z","size":248,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-23T22:22:08.836Z","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":null,"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":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"centic9"}},"created_at":"2022-04-04T15:55:16.000Z","updated_at":"2025-11-23T20:52:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"36bc5c09-124d-42fe-8881-ba0f6e9559d6","html_url":"https://github.com/centic9/hash4j-fuzz","commit_stats":{"total_commits":54,"total_committers":1,"mean_commits":54.0,"dds":0.0,"last_synced_commit":"b7f95fe623be6e68c0c263ab66f98372b463b863"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/centic9/hash4j-fuzz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fhash4j-fuzz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fhash4j-fuzz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fhash4j-fuzz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fhash4j-fuzz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/centic9","download_url":"https://codeload.github.com/centic9/hash4j-fuzz/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centic9%2Fhash4j-fuzz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29679782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T11:29:27.227Z","status":"ssl_error","status_checked_at":"2026-02-21T11:29:20.292Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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:02.116Z","updated_at":"2026-02-21T11:30:58.882Z","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 [hash4j](https://github.com/dynatrace-oss/hash4j) 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\nhash4j does not use JNI or native code, therefore the fuzzing target mainly\ntries to trigger unexpected exceptions and unbounded memory allocations.\n\n# How to fuzz\n\nBuild the fuzzing target:\n\n    ./gradlew shadowJar\n\nPrepare a corpus of test-files (i.e. valid and invalid lines) and put them\ninto directory `corpus`\n\n    mkdir corpus\n    i=0;cat src/test/resources/samples.txt | while IFS='' read data;do echo \"$data\" \u003e corpus/sample_$i.txt;i=$((i+1));done\n\n    mkdir corpusSimHash\n\nYou can add more documents to the corpus to help Jazzer in producing \"nearly\" \nproper queries which will improve fuzzing a lot. Slightly broken queries\nseem to be a good seed for fuzzing as well.\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\n    ./jazzer --cp=build/libs/hash4j-fuzz-all.jar --instrumentation_includes=com.dynatrace.** --target_class=com.dynatrace.hash4j.fuzz.Fuzz -rss_limit_mb=1024 --jvm_args=-Xss4m corpus\n\n    ./jazzer --cp=build/libs/hash4j-fuzz-all.jar --instrumentation_includes=com.dynatrace.** --target_class=com.dynatrace.hash4j.fuzz.SimHashFuzz -rss_limit_mb=1024 --jvm_args=-Xss4m corpusSimHash\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentic9%2Fhash4j-fuzz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcentic9%2Fhash4j-fuzz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentic9%2Fhash4j-fuzz/lists"}