{"id":33333886,"url":"https://github.com/python/library-fuzzers","last_synced_at":"2026-03-05T06:31:54.390Z","repository":{"id":324739048,"uuid":"1098149642","full_name":"python/library-fuzzers","owner":"python","description":"Fuzzer definitions, seed corpora and dictionaries to fuzz-test the stdlib","archived":false,"fork":false,"pushed_at":"2026-01-23T15:26:11.000Z","size":29616,"stargazers_count":3,"open_issues_count":1,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-24T09:18:22.249Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/python.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":{"custom":"https://www.python.org/psf/donations/python-dev/","github":["python"]}},"created_at":"2025-11-17T10:16:26.000Z","updated_at":"2026-02-18T11:57:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/python/library-fuzzers","commit_stats":null,"previous_names":["python/library-fuzzers"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/python/library-fuzzers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Flibrary-fuzzers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Flibrary-fuzzers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Flibrary-fuzzers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Flibrary-fuzzers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python","download_url":"https://codeload.github.com/python/library-fuzzers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Flibrary-fuzzers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30112233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":"2025-11-21T00:06:01.876Z","updated_at":"2026-03-05T06:31:54.368Z","avatar_url":"https://github.com/python.png","language":"Python","funding_links":["https://www.python.org/psf/donations/python-dev/","https://github.com/sponsors/python"],"categories":[],"sub_categories":[],"readme":"# Python Library Fuzzers\n\nThis repository contains the fuzzer definitions, seed corpora,\nand dictionaries used by [OSS-Fuzz](https://github.com/google/oss-fuzz) to fuzz-test Python standard library modules.\n\n## Getting Started\n\nRead the [getting started](https://google.github.io/oss-fuzz/getting-started/)\nguide for OSS-Fuzz to learn about the [architecture of the fuzzer](https://google.github.io/oss-fuzz/architecture/)\nand the necessary dependencies for local development (Docker, Python).\n\n## Architecture\n\nThere are four components of the [OSS-Fuzz architecture](https://google.github.io/oss-fuzz/architecture/)\nhosted in this repository. Other components of\nthe OSS-Fuzz architecture are hosted in other repositories.\n\nComponents that are hosted in this repository:\n\n* Fuzz target definitions. These are typically `.py` files that are bootstrapped\n  into binaries by `fuzzer.cpp` and `Makefile`.\n* Fuzz seed corpora (`corp-*`): These files contain \"starting points\" byte\n  sequences that the fuzzer can use to get results quicker than random bytes.\n* Fuzz dictionaries (`*.dict`): These files contain possible byte sequences that\n  the fuzzer can use when mutating input sequences.\n* Coverage header file (`python_coverage.h`): This file is compiled with CPython\n  so that line coverage is tracked over time as the fuzzer executes.\n\nComponents that are hosted elsewhere:\n\n* [Project configuration](https://github.com/google/oss-fuzz/tree/master/projects/python3-libraries): \n  This component controls the OSS-Fuzz project definition, maintainers.\n* [Fuzzer image configuration](https://github.com/google/oss-fuzz/tree/master/projects/python3-libraries):\n  `Dockerfile` and `build.sh` describe how the fuzzer\n  image is built and what fuzz targets are executed by OSS-Fuzz.\n\nWhen you create a new fuzz target **don't forget to add the target to the fuzzer image**\nso that the fuzz target is executed by OSS-Fuzz.\n\n## Adding fuzzing to CPython CI\n\nFuzzing Python standard library modules using continuous integration\ncan be done using CIFuzz and GitHub Actions. There is an existing\nconfiguration for CPython, but running fuzzing is expensive so\nonly runs when particular files are modified.\n\nWhen a standard library module has a new fuzzer added to this repository\nwe also need to add a corresponding \"trigger\" within the CPython repository.\nIn the file `Tools/build/compute-changes.py`, there is a list of\nfile and directory paths (`LIBRARY_FUZZER_PATHS`) that would trigger\na run of the standard library fuzzers within the pull request.\nAdd relevant paths and files to this list for the newly added fuzzer\nto trigger fuzzing when those files are changed.\n\n## Local development\n\nTo do develop locally with OSS-Fuzz you need to fork and clone the\nfollowing repositories:\n\n* https://github.com/google/oss-fuzz\n* https://github.com/python/library-fuzzers\n* https://github.com/python/cpython\n\nAfter cloning forks of these repositories, move into the `oss-fuzz`\nrepository and run the following to build the base and fuzzer image:\n\n```sh\npython infra/helper.py build_image python3-libraries\npython infra/helper.py build_fuzzers python3-libraries\n```\n\nOnce this succeeds you have the proper toolset to locally develop fuzzers.\nYou can run fuzz targets using the same helper script:\n\n```sh\npython infra/helper.py run_fuzzer python3-libraries fuzzer-email\n```\n\nThis will run the fuzzer indefinitely, so stop the fuzzer whenever\nyou've confirmed that it works.\nNow we need to point the `oss-fuzz` repository to our own forks to start\nlocal development.\n\nModify the `projects/python3-libraries/Dockerfile` file `git clone` lines\nto point to your own forks (example below using `sethmlarson`). It's recommended\nto use a branch on forks instead of `main`, so the example below also uses\n`--branch fork-branch` which you can change to your own branch depending on\nwhich repository you are modifying during development.\n\n```diff\n-RUN git clone https://github.com/python/cpython.git cpython\n-RUN git clone --depth 1 https://github.com/python/library-fuzzers.git\n+RUN git clone --depth 1 --branch fork-branch https://github.com/sethmlarson/cpython.git cpython\n+RUN git clone --depth 1 --branch fork-branch https://github.com/sethmlarson/library-fuzzers.git\n```\n\nAfter this you can now re-run the `python infra/helper.py` commands to rebuild the image and fuzzers\nusing the fork repositories instead. From here local development proceeds through pushing commits\nto your fork branches, rebuilding the image and fuzzers, and then running the fuzzers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpython%2Flibrary-fuzzers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpython%2Flibrary-fuzzers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpython%2Flibrary-fuzzers/lists"}