LCOV - code coverage report
Current view: top level - Modules/_xxtestfuzz - _xxtestfuzz.c (source / functions) Hit Total Coverage
Test: CPython 3.12 LCOV report [commit acb105a7c1f] Lines: 8 12 66.7 %
Date: 2022-07-20 13:12:14 Functions: 2 2 100.0 %
Branches: 3 6 50.0 %

           Branch data     Line data    Source code
       1                 :            : #define PY_SSIZE_T_CLEAN
       2                 :            : #include <Python.h>
       3                 :            : #include <stdlib.h>
       4                 :            : #include <inttypes.h>
       5                 :            : 
       6                 :            : int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
       7                 :            : 
       8                 :          8 : static PyObject* _fuzz_run(PyObject* self, PyObject* args) {
       9                 :            :     const char* buf;
      10                 :            :     Py_ssize_t size;
      11         [ -  + ]:          8 :     if (!PyArg_ParseTuple(args, "s#", &buf, &size)) {
      12                 :          0 :         return NULL;
      13                 :            :     }
      14                 :          8 :     int rv = LLVMFuzzerTestOneInput((const uint8_t*)buf, size);
      15         [ -  + ]:          8 :     if (PyErr_Occurred()) {
      16                 :          0 :         return NULL;
      17                 :            :     }
      18         [ -  + ]:          8 :     if (rv != 0) {
      19                 :            :         // Nonzero return codes are reserved for future use.
      20                 :          0 :         PyErr_Format(
      21                 :            :             PyExc_RuntimeError, "Nonzero return code from fuzzer: %d", rv);
      22                 :          0 :         return NULL;
      23                 :            :     }
      24                 :          8 :     Py_RETURN_NONE;
      25                 :            : }
      26                 :            : 
      27                 :            : static PyMethodDef module_methods[] = {
      28                 :            :     {"run", (PyCFunction)_fuzz_run, METH_VARARGS, ""},
      29                 :            :     {NULL},
      30                 :            : };
      31                 :            : 
      32                 :            : static struct PyModuleDef _fuzzmodule = {
      33                 :            :         PyModuleDef_HEAD_INIT,
      34                 :            :         "_fuzz",
      35                 :            :         NULL,
      36                 :            :         0,
      37                 :            :         module_methods,
      38                 :            :         NULL,
      39                 :            :         NULL,
      40                 :            :         NULL,
      41                 :            :         NULL
      42                 :            : };
      43                 :            : 
      44                 :            : PyMODINIT_FUNC
      45                 :          2 : PyInit__xxtestfuzz(void)
      46                 :            : {
      47                 :          2 :     return PyModule_Create(&_fuzzmodule);
      48                 :            : }

Generated by: LCOV version 1.14