{"id":23041,"library":"atheris","title":"Atheris","description":"A coverage-guided fuzzer for Python and Python extensions, developed by Google. It integrates with libFuzzer and supports fuzzing Python code and native extensions. Version 3.0.0; released active, follow-on of stable API.","status":"active","version":"3.0.0","language":"python","source_language":"en","source_url":"https://github.com/google/atheris/","tags":["fuzzing","security","testing","libFuzzer","coverage-guided"],"install":[{"cmd":"pip install atheris","lang":"bash","label":"pip install atheris"}],"dependencies":null,"imports":[{"note":"","wrong":null,"symbol":"atheris","correct":"import atheris"},{"note":"","wrong":null,"symbol":"Setup","correct":"from atheris import Setup"},{"note":"","wrong":null,"symbol":"FuzzedDataProvider","correct":"from atheris import FuzzedDataProvider"},{"note":"Deprecated in v3; use FuzzedDataProvider instead","wrong":null,"symbol":"Mutate","correct":"from atheris import Mutate"}],"quickstart":{"code":"import atheris\nimport sys\n\ndef TestOneInput(data):\n    fdp = atheris.FuzzedDataProvider(data)\n    if len(data) >= 2 and data[0] == ord('b') and data[1] == ord('u'):\n        raise RuntimeError('Bug!')\n\natheris.Setup(sys.argv, TestOneInput)\natheris.Fuzz()","lang":"python","description":"Basic fuzzer with FuzzedDataProvider."},"warnings":[{"fix":"Replace any usage of atheris.Mutate with FuzzedDataProvider methods (e.g., ConsumeInt, ConsumeString, etc.).","message":"atheris.Mutate is deprecated in v3. Use FuzzedDataProvider for structured mutation.","severity":"deprecated","affected_versions":">=3.0.0"},{"fix":"Instantiate as FuzzedDataProvider(data) and use its methods.","message":"In v3, the way FuzzedDataProvider is initialized changed. old: atheris.FuzzedDataProvider(data, to_use_bytes) no longer valid.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"On Linux, ensure clang and libfuzzer-dev are installed. For Windows, use WSL.","message":"atheris requires a recent C++ compiler and libFuzzer support. It may not install on Windows or older Linux. Use manylinux wheels or compile from source.","severity":"gotcha","affected_versions":"all"},{"fix":"Pass a corpus directory to Setup: atheris.Setup(sys.argv, TestOneInput, corpus_prefix='corpus/')","message":"Corpus directory: if not specified, atheris uses default; but crashes saved to current directory. Ensure write permissions.","severity":"gotcha","affected_versions":"all"},{"fix":"Define TestOneInput(data) with a single parameter.","message":"In v2, the TestOneInput function signature was different: it took two arguments (data and size). v3 expects one argument (bytes).","severity":"breaking","affected_versions":">=3.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install with pip install atheris. On Linux, install clang and libfuzzer-dev. On macOS, it works. On Windows, use WSL.","cause":"atheris is not installed or not available for the current platform.","error":"ModuleNotFoundError: No module named 'atheris'"},{"fix":"Upgrade atheris: pip install --upgrade atheris, and use from atheris import FuzzedDataProvider.","cause":"Version <3.0.0: FuzzedDataProvider was not available. Or using wrong import path.","error":"ImportError: cannot import name 'FuzzedDataProvider' from 'atheris'"},{"fix":"Change function signature to TestOneInput(data). Use FuzzedDataProvider to extract size if needed.","cause":"User defined TestOneInput with two parameters (data, size) but atheris v3 expects one parameter.","error":"TypeError: TestOneInput() takes 2 positional arguments but 3 were given"},{"fix":"Build/install atheris with the correct sanitizer flags. For pip, ensure clang is installed and libfuzzer-dev is present.","cause":"libFuzzer not found at runtime, typically because compiler not configured with -fsanitize=fuzzer.","error":"RuntimeError: Atheris requires libFuzzer, but it is not available"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}