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

Fuzzer details

Fuzzer: snappy_uncompress_fuzzer

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 24 10.3%
gold [1:9] 1 0.42%
yellow [10:29] 6 2.57%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 202 86.6%
All colors 233 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
0 0 None 136 594 voidsnappy::SnappyDecompressor::DecompressAllTags (snappy::SnappyArrayWriter*) call site: 00000 /src/snappy/snappy.cc:1456
0 0 None 30 30 snappy::SnappyDecompressor::RefillTag() call site: 00000 /src/snappy/snappy.cc:1555
0 0 None 4 321 snappy::Uncompress(charconst*,unsignedlong,std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/snappy/snappy.cc:2041
0 0 None 0 0 snappy::Uncompress(charconst*,unsignedlong,std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/snappy/snappy.cc:2046

Runtime coverage analysis

Covered functions
51
Functions that are reachable but not covered
20
Reachable functions
108
Percentage of reachable functions covered
81.48%
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
snappy_uncompress_fuzzer.cc 1
snappy.cc 36
snappy-stubs-internal.h 4
snappy-sinksource.h 2
snappy-sinksource.cc 2

Fuzzer: snappy_compress_fuzzer

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 81 20.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 324 80.0%
All colors 405 100

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
4 4 3 :

['__asan_handle_no_return', '__asan_memcpy', 'unsigned int const& std::__1::min (unsigned int const&, unsigned int const&)']

42 42 snappy::SnappyDecompressor::RefillTag() call site: 00000 /src/snappy/snappy.cc:1544
4 4 1 :

['__asan_report_load1']

6 6 snappy::Varint::Parse32WithLimit(charconst*,charconst*,unsignedint*) call site: 00000 /src/snappy/snappy-stubs-internal.h:466
0 0 None 92 431 voidsnappy::SnappyDecompressor::DecompressAllTags (snappy::SnappyDecompressionValidator*) call site: 00000 /src/snappy/snappy.cc:1429
0 0 None 68 225 snappy::Compress(snappy::Source*,snappy::Sink*) call site: 00000 /src/snappy/snappy.cc:1629
0 0 None 4 321 snappy::Uncompress(charconst*,unsignedlong,std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/snappy/snappy.cc:2041
0 0 None 0 0 snappy::GetUncompressedLength(charconst*,unsignedlong,unsignedlong*) call site: 00000 /src/snappy/snappy.cc:711
0 0 None 0 0 snappy::Uncompress(charconst*,unsignedlong,std::__1::basic_string ,std::__1::allocator >*) call site: 00000 /src/snappy/snappy.cc:2046

Runtime coverage analysis

Covered functions
99
Functions that are reachable but not covered
27
Reachable functions
206
Percentage of reachable functions covered
86.89%
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
snappy_compress_fuzzer.cc 1
snappy.cc 52
snappy-stubs-internal.h 11
snappy-sinksource.h 5
snappy-internal.h 3
snappy-sinksource.cc 4

Files and Directories in report