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

Project functions overview

The following table shows data about each function in the project. The functions included in this table correspond to all functions that exist in the executables of the fuzzers. As such, there may be functions that are from third-party libraries.

For further technical details on the meaning of columns in the below table, please see the Glossary .

Func name Functions filename Args Function call depth Reached by Fuzzers Runtime reached by Fuzzers Combined 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

Fuzzer details

Fuzzer: coerce

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

Runtime coverage analysis

Covered functions
1454
Functions that are reachable but not covered
0
Reachable functions
8
Percentage of reachable functions covered
100.0%
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
coerce.c 1
common.h 3

Fuzzer: parse

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 3 27.2%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 8 72.7%
All colors 11 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
3 7 LLVMFuzzerTestOneInput call site: 00007 R_ParseVector

Runtime coverage analysis

Covered functions
1559
Functions that are reachable but not covered
0
Reachable functions
10
Percentage of reachable functions covered
100.0%
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
parse.c 2
common.h 2

Fuzzer: scan

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

Runtime coverage analysis

Covered functions
1520
Functions that are reachable but not covered
0
Reachable functions
8
Percentage of reachable functions covered
100.0%
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
scan.c 1
common.h 3

Fuzzer: unserialize

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

Runtime coverage analysis

Covered functions
1582
Functions that are reachable but not covered
0
Reachable functions
9
Percentage of reachable functions covered
100.0%
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
unserialize.c 1
common.h 3

Fuzzer: datetime

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

Runtime coverage analysis

Covered functions
1527
Functions that are reachable but not covered
0
Reachable functions
8
Percentage of reachable functions covered
100.0%
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
datetime.c 1
common.h 3

Fuzzer: decompress

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

Runtime coverage analysis

Covered functions
1496
Functions that are reachable but not covered
0
Reachable functions
9
Percentage of reachable functions covered
100.0%
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
decompress.c 1
common.h 3

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
tre_match 51 26 50.98%
tre_expand_ast 210 91 43.33%
tre_parse 697 322 46.19%
tre_stack_push 36 8 22.22%
R_common_command_line 170 43 25.29%
initLoadedDLL 56 20 35.71%
AddDLL 48 25 52.08%
process_Renviron 65 27 41.53%
do_vapply 165 85 51.51%
do_arith 110 30 27.27%
R_binary 150 46 30.66%
integer_binary 127 45 35.43%
do_matrix 126 51 40.47%
Rf_DropDims 93 41 44.08%
Rf_namesgets 53 18 33.96%
Rf_dimnamesgets 63 28 44.44%
do_attr 92 43 46.73%
do_attrgets 61 27 44.26%
R_do_slot 34 10 29.41%
do_AT 32 15 46.87%
row_names_gets 54 12 22.22%
do_bind 86 44 51.16%
c_Extract_opt 32 12 37.5%
AnswerType 71 24 33.80%
ListAnswer 58 15 25.86%
namesCount 41 15 36.58%
cbind 236 103 43.64%
rbind 218 57 26.14%
R_nchar 110 11 10.0%
do_startsWith 95 35 36.84%
do_makenames 82 45 54.87%
Rf_coerceVector 118 61 51.69%
do_asvector 81 39 48.14%
Rf_asInteger 32 16 50.0%
Rf_asReal 33 10 30.30%
do_is 137 56 40.87%
do_isna 87 34 39.08%
coercePairList 70 18 25.71%
coerceVectorList 81 23 28.39%
coerceToSymbol 35 18 51.42%
coerceToReal 40 18 45.0%
coerceToComplex 40 18 45.0%
coerceToRaw 65 20 30.76%
coerceToVectorList 53 18 33.96%
anyNA 98 34 34.69%
R_set_class 75 28 37.33%
Rf_set_iconv 33 7 21.21%
dummy_fgetc 108 5 4.629%
R_run_onexits 34 15 44.11%
do_sys 66 27 40.90%
R_doDotCall 657 19 2.891%
resolveNativeRoutine 79 13 16.45%
R_cycle_detected 36 18 50.0%
Rf_copyVector 32 13 40.62%
Rf_copyMatrix 41 7 17.07%
Rf_unbindVar 36 19 52.77%
Rf_findVarInFrame3 44 24 54.54%
do_attach 83 43 51.80%
do_as_environment 39 13 33.33%
findVarLocInFrame 41 20 48.78%
RemoveVariable 37 17 45.94%
do_signalCondition 32 17 53.12%
vwarningcall_dflt 88 17 19.31%
Rf_evalListKeepMissing 53 29 54.71%
handle_exec_continuation 33 4 12.12%
R_execClosure 46 25 54.34%
applydefine 122 66 54.09%
evalseq 40 18 45.0%
R_FinalizeSrcRefState 38 14 36.84%
Rf_isValidName 34 16 47.05%
SymbolValue 32 15 46.87%
do_strsplit 501 150 29.94%
do_grep 207 102 49.27%
do_gsub 351 145 41.31%
fgrep_one 49 10 20.40%
R_gzread 83 36 43.37%
R_compute_identical 223 43 19.28%
lbinary 102 48 47.05%
lunary 77 42 54.54%
init_gc_grow_settings 53 13 24.52%
R_gc_internal 101 34 33.66%
check_SET_TYPEOF 34 14 41.17%
caseSPECIALSXP 58 31 53.44%
dispatchMethod 92 33 35.86%
do_options 400 149 37.25%
do_fileinfo 110 57 51.81%
EncodeRealDrop0 51 17 33.33%
nalast=(asLogical(CAR(args))==NA_LOGICAL)?0 297 75 25.25%
isorted 43 15 34.88%
do_relop_dflt 196 82 41.83%
string_relop 109 37 33.94%
scanchar 55 15 27.27%
extractItem 60 27 45.0%
do_rep_int 54 20 37.03%
do_rep_len 63 27 42.85%
seq_colon 36 6 16.66%
rep3 47 20 42.55%
InBytesConn 31 11 35.48%
Rf_isUnsorted 96 18 18.75%
do_sprintf 371 145 39.08%
R_SizeFromEnv 44 14 31.81%
do_subassign2_dflt 285 100 35.08%
R_subassign3_dflt 161 55 34.16%
VectorAssign 205 65 31.70%
MatrixAssign 143 37 25.87%
SubassignTypeFix 147 43 29.25%
EnlargeVector 107 39 36.44%
Rf_OneIndex 89 34 38.20%
Rf_get1index 111 43 38.73%
logicalSubscript 113 32 28.31%
do_subset_dflt 162 72 44.44%
do_subset2_dflt 141 76 53.90%
R_subset3_dflt 125 47 37.6%
do_summary 385 154 40.0%
do_first_min 89 40 44.94%
do_which 62 30 48.38%
HashTableSetup 62 29 46.77%
duplicatedInit 38 14 36.84%
match5 150 80 53.33%
Rf_asChar 37 10 27.02%
Rf_initialize_R 210 88 41.90%
deparse2buff 617 339 54.94%
verrorcall_dflt 122 67 54.91%
vsignalError 35 13 37.14%
Rf_EncodeString 184 99 53.80%
REvprintf_internal 53 14 26.41%
R_pow 40 13 32.5%
real_binary 235 37 15.74%
Rf_sexptype2char 31 8 25.80%
OutString 31 6 19.35%
WriteItem 201 13 6.467%
strptime_internal 394 178 45.17%
do_abs 35 19 54.28%
do_isfinite 59 30 50.84%
localtime0 96 11 11.45%
mktime0 31 5 16.12%
balancePOSIXlt 170 11 6.470%