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

Fuzzer details

Fuzzer: codecfuzzer

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 2 3.84%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 50 96.1%
All colors 52 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
1 4 meshopt_decodeIndexBuffer call site: 00004 __assert_fail
1 42 meshopt_decodeVertexBuffer call site: 00042 __assert_fail

Runtime coverage analysis

Covered functions
19
Functions that are reachable but not covered
1
Reachable functions
19
Percentage of reachable functions covered
94.74%
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.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
tools/codecfuzz.cpp 2
src/indexcodec.cpp 7
src/vertexcodec.cpp 2

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

The following table shows a list of functions that are optimal targets. Optimal targets are identified by finding the functions that in combination, yield a high code coverage.

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
meshopt_encodeIndexBuffer /src/meshoptimizer/src/indexcodec.cpp 4 ['char *', 'size_t ', 'int *', 'size_t '] 1 0 960 145 45 17 0 71 65
meshopt_encodeVertexBuffer /src/meshoptimizer/src/vertexcodec.cpp 5 ['char *', 'size_t ', 'char *', 'size_t ', 'size_t '] 3 0 302 44 11 15 0 51 47
meshopt::decodeVertexBlock(unsignedcharconst*,unsignedcharconst*,unsignedchar*,unsignedlong,unsignedlong,unsignedchar*) /src/meshoptimizer/src/vertexcodec.cpp 6 ['char *', 'char *', 'char *', 'size_t ', 'size_t ', 'char *'] 2 0 170 21 6 7 0 47 45

Implementing fuzzers that target the above functions will improve reachability such that it becomes:

Functions statically reachable by fuzzers
64.0%
28 / 44
Cyclomatic complexity statically reachable by fuzzers
78.0%
217 / 279

All functions overview

If you implement fuzzers for these functions, the status of all functions in the project will be:

Func name Functions filename Args Function call depth Reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity