Fuzz introspector
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzzer details

Fuzzer: fuzz_bn

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 107 62.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 64 37.4%
All colors 171 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
24 49 numpy.ma.core._replace_dtype_fields call site: 00049 numpy.ma.core.make_mask
20 143 numpy.testing._private.utils.assert_array_compare call site: 00143 numpy.testing._private.utils.build_err_msg
13 10 numpy.testing._private.utils.assert_array_almost_equal call site: 00010 numpy.testing._private.utils.build_err_msg
12 128 numpy.testing._private.utils.assert_array_compare call site: 00128 numpy.ma.testutils.almost
10 114 numpy.core._ufunc_config._no_nep50_warning call site: 00114 numpy.core.numeric.isclose.within_tol
8 104 numpy.testing._private.utils.assert_array_compare call site: 00104 numpy.core.numeric.isclose
6 75 numpy.ma.testutils.approx call site: 00075 numpy.ma.core.filled
3 35 numpy.testing._private.utils.assert_array_compare call site: 00035 numpy.testing._private.utils.assert_array_compare.func_assert_same_pos
3 44 numpy.ma.testutils.approx call site: 00044 numpy.ma.core.make_mask
2 93 numpy.testing._private.utils.assert_array_almost_equal.compare call site: 00093 numpy.testing._private.utils.gisinf
1 2 ...fuzz_bn.TestOneInput call site: 00002 atheris.FuzzedDataProvider
1 30 numpy.testing._private.utils.assert_array_compare.func_assert_same_pos call site: 00030 numpy.testing._private.utils.build_err_msg

Runtime coverage analysis

Covered functions
537
Functions that are reachable but not covered
68
Reachable functions
89
Percentage of reachable functions covered
23.6%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
/ 1
...fuzz_bn 9
numpy.testing._private.utils 40
numpy.ma.testutils 9
numpy.ma.core 19
numpy.core.fromnumeric 5
numpy.core.numerictypes 2
numpy.core.numeric 10
numpy.core._ufunc_config 2

Runtime coverage analysis

This section shows analysis of runtime coverage data.

For futher technical details on how this section is generated, please see the Glossary .

Complex functions with low coverage

Func name Function total lines Lines covered at runtime percentage covered Reached by fuzzers
numpy.testing._private.utils.assert_equal 73 0 0.0% []
numpy.testing._private.utils.assert_almost_equal._build_err_msg 32 0 0.0% []
numpy.testing._private.utils.assert_array_compare.func_assert_same_pos 74 28 37.83% ['fuzz_bn']
numpy.testing._private.utils.assert_string_equal 38 0 0.0% []
numpy.testing._private.utils._gen_alignment_data 32 3 9.375% []
numpy.testing._private.utils.suppress_warnings._showwarning 31 0 0.0% []
numpy._pytesttester.PytestTester.__call__ 39 0 0.0% []
numpy.lib.utils.who 41 0 0.0% []
numpy.lib.utils.info 69 0 0.0% []
numpy.lib.utils._lookfor_generate_cache 89 0 0.0% []
numpy.core.numeric.tensordot 54 0 0.0% []
numpy.core.numeric.cross 61 1 1.639% []
numpy.matrixlib.defmatrix.matrix.__new__ 35 0 0.0% []
numpy.core.function_base.linspace 37 0 0.0% []
numpy.core.function_base.geomspace 33 0 0.0% []
numpy.lib.polynomial.polyfit 48 0 0.0% []
numpy.lib.polynomial.poly1d.__str__.fmt_float 35 0 0.0% []
numpy.core.einsumfunc._greedy_path 34 0 0.0% []
numpy.core.einsumfunc._can_dot 31 0 0.0% []
numpy.core.einsumfunc._parse_einsum_input 103 0 0.0% []
numpy.core.einsumfunc.einsum_path 107 0 0.0% []
numpy.core.einsumfunc.einsum 42 0 0.0% []
numpy.ctypeslib.ndpointer 45 0 0.0% []
numpy.ma.core.MaskedArray.__new__ 51 16 31.37% []
numpy.ma.core.MaskedArray.__getitem__._scalar_heuristic 41 0 0.0% []
numpy.ma.core.MaskedArray.__setitem__ 50 3 6.0% []
numpy.ma.core.MaskedArray.__setmask__ 37 3 8.108% []
numpy.ma.core.MaskedArray.__repr__ 33 0 0.0% []
numpy.ma.core.MaskedArray.var 35 1 2.857% []
bottleneck.slow.move.lastrank 32 0 0.0% []
numpy.lib.arraypad._set_reflect_both 35 0 0.0% []
numpy.lib.arraypad.pad 74 0 0.0% []
numpy.lib.index_tricks.nd_grid.__getitem__ 55 2 3.636% []
numpy.lib.index_tricks.AxisConcatenator.__getitem__ 82 0 0.0% []
numpy.lib.function_base.select 31 0 0.0% []
numpy.lib.function_base.gradient 113 0 0.0% []
numpy.lib.function_base.diff 37 0 0.0% []
numpy.lib.function_base.cov 69 0 0.0% []
numpy.lib.function_base._ureduce 33 16 48.48% []
numpy.lib.function_base._quantile 34 0 0.0% []
numpy.lib.function_base.delete 89 0 0.0% []
numpy.lib.function_base.insert 67 0 0.0% []
numpy.linalg.linalg.matrix_power 32 0 0.0% []
numpy.linalg.linalg.qr 47 0 0.0% []
numpy.linalg.linalg.svd 41 0 0.0% []
numpy.linalg.linalg.lstsq 38 0 0.0% []
numpy.linalg.linalg.norm 82 0 0.0% []
numpy.ma.extras.apply_along_axis 69 1 1.449% []
numpy.ma.extras.average 31 0 0.0% []
numpy.ma.extras._median 36 0 0.0% []
numpy.ma.extras.corrcoef 31 3 9.677% []
numpy.lib.nanfunctions.nanvar 34 3 8.823% []
numpy.core.arrayprint._formatArray.recurser 58 0 0.0% []
numpy.core.arrayprint.FloatingFormat.fillFormat 56 0 0.0% []
numpy.lib.histograms._get_bin_edges 40 0 0.0% []
numpy.lib.histograms.histogram 54 0 0.0% []
numpy.lib.histograms.histogramdd 57 0 0.0% []
numpy.lib.npyio._read 98 1 1.020% []
numpy.lib.npyio.savetxt.WriteWrap.first_write 67 0 0.0% []
numpy.lib.npyio.genfromtxt 169 0 0.0% []
numpy.lib.npyio.genfromtxt.tobytes_first 77 0 0.0% []
numpy.lib.npyio.genfromtxt.encode_unicode_cols 79 1 1.265% []
numpy.lib.format._read_array_header 37 0 0.0% []
numpy.lib.format.read_array 32 0 0.0% []
numpy.polynomial.chebyshev._zseries_div 31 0 0.0% []
numpy.polynomial.chebyshev.chebint 37 0 0.0% []
numpy.lib._iotools.NameValidator.validate 38 0 0.0% []
numpy.lib._iotools.StringConverter.__init__ 46 0 0.0% []
numpy.core.records.fromfile 33 0 0.0% []
numpy.core.records.array 41 0 0.0% []
numpy.core._machar.MachAr._do_init 178 0 0.0% []
numpy.core.memmap.memmap.__new__ 52 0 0.0% []
numpy.lib.arraysetops.in1d 69 0 0.0% []
numpy.core._internal._array_descr 34 0 0.0% []
numpy.core._internal._commastring 33 0 0.0% []
numpy.core._internal.__dtype_from_pep3118 78 0 0.0% []
numpy.core.defchararray.array 40 0 0.0% []
bottleneck.tests.util.array_generator 82 0 0.0% []
numpy.polynomial.hermite.hermint 34 0 0.0% []
numpy.polynomial.polyutils._fit 53 0 0.0% []
numpy.polynomial.polynomial.polyint 35 0 0.0% []
numpy.polynomial._polybase.ABCPolyBase._repr_latex_ 33 0 0.0% []
numpy.polynomial.legendre.legint 38 0 0.0% []
numpy.polynomial.laguerre.lagint 35 0 0.0% []
numpy.polynomial.hermite_e.hermeint 34 0 0.0% []
numpy.testing._private.nosetester.NoseTester.prepare_test_args 36 0 0.0% []
numpy.testing._private.nosetester.NoseTester.test 34 0 0.0% []
bottleneck.benchmark.bench.benchsuite.getsetups 53 0 0.0% []

Files and Directories in report

This section shows which files and directories are considered in this report. The main reason for showing this is fuzz introspector may include more code in the reasoning than is desired. This section helps identify if too many files/directories are included, e.g. third party code, which may be irrelevant for the threat model. In the event too much is included, fuzz introspector supports a configuration file that can exclude data from the report. See the following link for more information on how to create a config file: link

Files in report

Source file Reached by Covered by
[] []
builtins [] []
typing [] []
numpy.polynomial.polyutils [] []
numpy.lib.function_base [] []
numpy.core.records [] []
numpy.testing._private.utils ['fuzz_bn'] []
numpy.core.multiarray [] []
move [] []
numpy.f2py.f2py2e [] []
numpy.array_api._array_object [] []
numpy.testing.utils [] []
numpy.f2py.setup [] []
numpy.fft._pocketfft [] []
subprocess [] []
numpy.distutils.extension [] []
numpy.ctypeslib [] []
numpy._pyinstaller.test_pyinstaller [] []
numpy._pyinstaller [] []
numpy.core._internal [] []
numpy.distutils.command.config_compiler [] []
numpy.distutils.ccompiler [] []
numpy.array_api._creation_functions [] []
numpy.core.function_base [] []
bottleneck._version [] []
fileinput [] []
numpy.distutils.fcompiler.compaq [] []
numpy._typing._array_like [] []
bottleneck._pytesttester [] []
numpy.array_api._statistical_functions [] []
numpy.f2py.f90mod_rules [] []
numpy.distutils.fcompiler.vast [] []
optparse [] []
pickle [] []
numpy.compat.py3k [] []
urllib [] []
nose [] []
pickle5 [] []
platform [] []
numpy.distutils [] []
numpy.ma.core ['fuzz_bn'] []
types [] []
numpy.core.getlimits [] []
numpy.distutils.conv_template [] []
numpy.random [] []
numpy.lib.format [] []
struct [] []
gc [] []
numpy.distutils.fcompiler.nv [] []
distutils [] []
timeit [] []
numpy.distutils.fcompiler.environment [] []
numpy.distutils.command.sdist [] []
numpy.dual [] []
bottleneck [] []
PyInstaller [] []
numpy.distutils.fcompiler.intel [] []
numpy.lib.arraypad [] []
weakref [] []
numpy.distutils.command.egg_info [] []
numpy.distutils.system_info [] []
numpy.lib.nanfunctions [] []
genapi [] []
unittest [] []
numpy.distutils.fcompiler.nag [] []
numpy_distutils [] []
numpy._typing._nested_sequence [] []
numpy.random._examples.numba.extending [] []
numpy.array_api.setup [] []
numpy.core._exceptions [] []
numpy.core.cversions [] []
numpy.lib._datasource [] []
shutil [] []
numpy.__config__ [] []
numpy.distutils.fcompiler.absoft [] []
copy [] []
traceback [] []
numpy.random._examples.cffi.extending [] []
numpy.distutils.command.build_py [] []
numpy.core._add_newdocs [] []
numpy.lib.mixins [] []
bottleneck.slow.move [] []
pathlib [] []
numpy._globals [] []
numpy.core.fromnumeric ['fuzz_bn'] []
numpy.core.overrides [] []
numpy.ma.mrecords [] []
_mt19937 [] []
abc [] []
_dummy_thread [] []
_multiarray_umath [] []
numpy.distutils.numpy_distribution [] []
numpy.ma.bench [] []
numpy._typing._generic_alias [] []
difflib [] []
numpy.distutils.msvc9compiler [] []
numpy.f2py [] []
numpy.compat._inspect [] []
numpy.core._add_newdocs_scalars [] []
numpy.setup [] []
numpy.core._dtype [] []
numpy.distutils.fcompiler.pg [] []
numpy.core._machar [] []
numpy.distutils.fcompiler.none [] []
numpy.distutils.command.install [] []
numpy.distutils.line_endings [] []
warnings [] []
numpy.doc.constants [] []
pprint [] []
numpy.distutils.command.config [] []
numpy.distutils._shell_utils [] []
numpy.lib.index_tricks [] []
numpy.array_api._typing [] []
numpy.lib.recfunctions [] []
numpy.distutils.__config__ [] []
numba [] []
numpy.lib.stride_tricks [] []
numpy.polynomial.hermite_e [] []
atexit [] []
bottleneck.src.bn_template [] []
numpy.array_api._constants [] []
time [] []
numpy._typing._nbit [] []
numpy.compat.setup [] []
numpy.distutils.from_template [] []
json [] []
numpy.distutils.unixccompiler [] []
zipfile [] []
numpy.lib.type_check [] []
bottleneck.src.bn_config [] []
bottleneck.tests.util [] []
bottleneck.slow.reduce [] []
numpy.testing.setup [] []
numpy.polynomial.legendre [] []
base64 [] []
numpy.core.einsumfunc [] []
numpy.core.setup_common [] []
numpy.distutils.command.build [] []
numpy.distutils.exec_command [] []
numpy.f2py.symbolic [] []
win32pdh [] []
locale [] []
numpy.core.defchararray [] []
numpy._pyinstaller.hook-numpy [] []
numpy._pyinstaller.pyinstaller-smoke [] []
sysconfig [] []
operator [] []
numpy.f2py.use_rules [] []
numpy.core.numeric ['fuzz_bn'] []
hypothesis [] []
numpy.linalg.linalg [] []
numpy.fft.setup [] []
numpy.testing._private.decorators [] []
importlib [] []
numpy.f2py.__version__ [] []
numpy._typing._char_codes [] []
numpy.core.umath [] []
numpy.lib.ufunclike [] []
numpy.compat [] []
numpy.core.arrayprint [] []
numpy.lib.twodim_base [] []
numpy.core._methods [] []
numpy.compat._pep440 [] []
atheris [] []
numpy.distutils.fcompiler.gnu [] []
math [] []
numpy.distutils.setup [] []
threadpoolctl [] []
numpy.distutils.fcompiler [] []
numpy.f2py.common_rules [] []
numpy.matrixlib.defmatrix [] []
numpy.f2py.cfuncs [] []
numpy.array_api._manipulation_functions [] []
numpy.core [] []
numpy.polynomial [] []
mypy [] []
re [] []
bottleneck.benchmark.bench_detailed [] []
charset_normalizer [] []
numpy.lib.setup [] []
numpy.distutils.mingw32ccompiler [] []
numpy.core._string_helpers [] []
numpy.f2py.diagnose [] []
numpy.array_api._set_functions [] []
os [] []
mtrand [] []
numpy.random._examples.cython.setup [] []
numpy._typing.setup [] []
numpy.random.setup [] []
numpy.random._examples.cffi.parse [] []
numpy.conftest [] []
numpy.lib.histograms [] []
numpy.lib.polynomial [] []
numpy.core.umath_tests [] []
itertools [] []
numpy.distutils.command.develop [] []
numpy.core._ufunc_config ['fuzz_bn'] []
numpy.doc.ufuncs [] []
numpy.random._examples.numba.extending_distributions [] []
curses [] []
_thread [] []
numpy.typing.mypy_plugin [] []
numpy.random._pickle [] []
numpy.polynomial.polynomial [] []
numpy.distutils.npy_pkg_config [] []
cffi [] []
numbers [] []
textwrap [] []
psutil [] []
numpy.matrixlib.setup [] []
numpy.lib.arrayterator [] []
numpy.distutils.fcompiler.mips [] []
numpy.typing [] []
_pcg64 [] []
numpy.core.generate_numpy_api [] []
numpy.testing._private.noseclasses [] []
ctypes [] []
numpy.doc [] []
numpy.core.setup [] []
numpy.lib.arraysetops [] []
_pocketfft_internal [] []
numpy.f2py.auxfuncs [] []
numpy.distutils.pathccompiler [] []
numpy.lib.utils [] []
numpy.matlib [] []
numpy.typing.setup [] []
_generator [] []
numpy._typing._shape [] []
code_generators [] []
numpy.distutils.log [] []
numpy.lib.npyio [] []
mmap [] []
pipes [] []
numpy._typing._add_docstring [] []
bottleneck.slow.nonreduce [] []
numpy.distutils.fcompiler.g95 [] []
numpy.array_api._dtypes [] []
bottleneck.benchmark.autotimeit [] []
numpy.lib._version [] []
numpy.ma.extras [] []
numpy.testing.print_coercion_tables [] []
hashlib [] []
numpy.ma.setup [] []
numpy.distutils.command.build_src [] []
tokenize [] []
numpy.distutils.cpuinfo [] []
concurrent [] []
bottleneck.slow.nonreduce_axis [] []
numpy.core._dtype_ctypes [] []
numpy.distutils.command.install_data [] []
numpy.distutils.fcompiler.lahey [] []
winreg [] []
numpy.distutils.core [] []
numpy.core.shape_base [] []
numpy.array_api._utility_functions [] []
numpy.polynomial.setup [] []
numpy.distutils.ccompiler_opt [] []
numpy.version [] []
numpy.f2py.func2subr [] []
ast [] []
numpy._distributor_init [] []
configparser [] []
numpy._typing._dtype_like [] []
numpy.distutils.command.autodist [] []
numpy.lib._iotools [] []
numpy.array_api._sorting_functions [] []
numpy.testing [] []
numpy.ma.testutils ['fuzz_bn'] []
pytest [] []
numpy.matrixlib [] []
numpy.linalg.setup [] []
numpy.testing._private.nosetester [] []
bottleneck.benchmark [] []
numpy.f2py.rules [] []
numpy.distutils.msvccompiler [] []
multiprocessing [] []
numpy.array_api._searching_functions [] []
numpy.f2py.__main__ [] []
numpy._typing [] []
numpy.fft.helper [] []
numpy.distutils.command.build_clib [] []
numpy.distutils.command.build_scripts [] []
numpy._typing._scalars [] []
setuptools [] []
numpy._typing._extended_precision [] []
...fuzz_bn ['fuzz_bn'] []
[] []
bottleneck.src [] []
contextlib [] []
shlex [] []
copyreg [] []
pydoc [] []
sys [] []
numpy.polynomial.chebyshev [] []
functools [] []
bottleneck.benchmark.bench [] []
numpy.distutils.fcompiler.ibm [] []
bottleneck.tests [] []
numpy.testing._private.parameterized [] []
numpy.distutils.command [] []
numpy.f2py.cb_rules [] []
numpy.array_api._elementwise_functions [] []
numpy.ma.timer_comparison [] []
numpy.polynomial.hermite [] []
numpy.lib [] []
posixpath [] []
doctest [] []
numpy.distutils.fcompiler.fujitsu [] []
bottleneck.slow [] []
numpy.polynomial._polybase [] []
numpy.fft [] []
inspect [] []
numpy.distutils.command.bdist_rpm [] []
numpy.distutils.lib2def [] []
collections [] []
numpy.f2py.capi_maps [] []
numpy.testing._private [] []
numpy.distutils.command.install_clib [] []
numpy._pytesttester [] []
numpy.core._asarray [] []
glob [] []
io [] []
numpy.polynomial.laguerre [] []
numpy.ma [] []
numpy.distutils.misc_util [] []
numpy.testing._private.extbuild [] []
numpy.distutils.fcompiler.pathf95 [] []
numpy.lib.scimath [] []
threading [] []
numpy.distutils.fcompiler.sun [] []
numpy.core.numerictypes ['fuzz_bn'] []
numpy.core.memmap [] []
numpy.distutils.command.install_headers [] []
tempfile [] []
contextvars [] []
numpy.linalg [] []
numpy.distutils.armccompiler [] []
numpy.array_api [] []
numpy.f2py.crackfortran [] []
numpy.array_api.linalg [] []
numpy [] []
numpy.core._type_aliases [] []
numpy.distutils.command.build_ext [] []
numpy.distutils.fcompiler.hpux [] []
numpy.distutils.intelccompiler [] []
numpy.array_api._data_type_functions [] []
numpy.lib.user_array [] []
numpy.lib.shape_base [] []
numpy.distutils.fcompiler.arm [] []
numpy._version [] []
Cython [] []

Directories in report

Directory