LCOV - code coverage report
Current view: | top level - Modules/_xxtestfuzz - _xxtestfuzz.c (source / functions) |  |  | Hit | Total | Coverage
Test: | CPython 3.12 LCOV report [commit 5e6661bce9] |  | Lines: | 2 | 12 | 16.7 %
Date: | 2023-03-20 08:15:36 |  | Functions: | 1 | 2 | 50.0 %
|  |  | Branches: | 0 | 6 | 0.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                 :          0 : static PyObject* _fuzz_run(PyObject* self, PyObject* args) {
           9                 :            :     const char* buf;
          10                 :            :     Py_ssize_t size;
          11         [ #  # ]:          0 :     if (!PyArg_ParseTuple(args, "s#", &buf, &size)) {
          12                 :          0 :         return NULL;
          13                 :            :     }
          14                 :          0 :     int rv = LLVMFuzzerTestOneInput((const uint8_t*)buf, size);
          15         [ #  # ]:          0 :     if (PyErr_Occurred()) {
          16                 :          0 :         return NULL;
          17                 :            :     }
          18         [ #  # ]:          0 :     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                 :          0 :     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                 :          1 : PyInit__xxtestfuzz(void)
          46                 :            : {
          47                 :          1 :     return PyModule_Create(&_fuzzmodule);
          48                 :            : }

Generated by: LCOV version 1.14