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

Fuzzer details

Fuzzer: augeas_escape_name_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 4275 88.1%
gold [1:9] 0 0.0%
yellow [10:29] 12 0.24%
greenyellow [30:49] 10 0.20%
lawngreen 50+ 550 11.3%
All colors 4847 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
5440 5440 2 :

['ns_remove', 'eval_pred']

5440 5440 ns_filter call site: 00392 /src/augeas/src/pathx.c:1268
1009 1019 3 :

['regexp_check', 'make_base_type', 'syntax_error']

1009 1019 check_value call site: 01792 /src/augeas/src/syntax.c:1150
309 309 1 :

['parse_function_call']

309 309 parse_primary_expr call site: 00137 /src/augeas/src/pathx.c:2341
168 168 2 :

['tree_fpath', 'tree_unlink']

168 168 tree_rm_dirty_files call site: 04782 /src/augeas/src/augeas.c:701
66 66 2 :

['push_boolean_value', 'coerce_to_bool']

66 66 eval_else call site: 00705 /src/augeas/src/pathx.c:1009
58 2917 5 :

['mem_alloc_n', 'rpl_free', 'path_of_tree', 'pathx_next', 'pathx_first']

58 3335 aug_match call site: 04835 /src/augeas/src/augeas.c:1428
15 15 1 :

['free_span']

15 27 free_tree_node call site: 00026 /src/augeas/src/augeas.c:650
4 16 3 :

['strlen', 'mem_realloc_n', 'strcat']

4 16 init_root call site: 00047 /src/augeas/src/augeas.c:472
2 2 1 :

['argz_add_sep']

12 16 init_loadpath call site: 00058 /src/augeas/src/augeas.c:492
2 2 1 :

['__ctype_b_loc']

2 2 step_matches call site: 00375 /src/augeas/src/pathx.c:2720
0 5431 3 :

['eval_expr', 'ns_filter', 'pop_value_ind']

0 8183 eval_filter call site: 00352 /src/augeas/src/pathx.c:1442
0 630 3 :

['make_step', 'match', 'parse_relative_location_path']

0 730 parse_path_expr call site: 00172 /src/augeas/src/pathx.c:2387

Runtime coverage analysis

Covered functions
150
Functions that are reachable but not covered
888
Reachable functions
1039
Percentage of reachable functions covered
14.53%
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
augeas_escape_name_fuzzer.cc 2
src/augeas.c 53
src/memory.c 2
src/ref.c 1
src/info.c 10
gnulib/lib/free.c 1
src/errcode.c 4
src/./internal.h 2
src/pathx.c 101
src/regexp.c 24
gnulib/lib/./regcomp.c 45
gnulib/lib/./regex_internal.c 33
src/internal.c 22
src/fa.c 128
gnulib/lib/mbrtowc.c 1
gnulib/lib/hard-locale.c 1
gnulib/lib/setlocale_null.c 3
gnulib/lib/./regex_internal.h 12
gnulib/lib/./regexec.c 54
gnulib/lib/./malloc/dynarray-skeleton.c 7
gnulib/lib/malloc/dynarray_resize.c 1
gnulib/lib/./malloc/dynarray.h 1
src/syntax.c 79
src/builtin.c 40
src/lens.c 68
src/jmt.c 63
src/transform.c 31
src/parser.y 20
src/lexer.l 5
src/lexer.c 25
src/parser.c 8
src/hash.c 15
src/get.c 68
src/ast.c 6
src/put.c 35

Fuzzer: augeas_fa_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 694 98.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 10 1.42%
All colors 704 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
4888 4896 2 :

['load_module_file', 'rpl_free']

4888 4896 load_module call site: 00000 /src/augeas/src/syntax.c:2018
599 599 2 :

['transit_state_bkref', 'check_subexp_matching_top']

1737 2380 check_matching call site: 00000 /src/augeas/gnulib/lib/./regexec.c:1051
548 560 2 :

['free_lens', 'rpl_free']

548 560 free_lns_error call site: 00000 /src/augeas/src/get.c:252
168 168 1 :

['fetch_number']

168 338 parse_dup_op call site: 00000 /src/augeas/gnulib/lib/./regcomp.c:2491
168 168 2 :

['tree_fpath', 'tree_unlink']

168 168 tree_rm_dirty_files call site: 00000 /src/augeas/src/augeas.c:701
124 124 2 :

['build_wcs_upper_buffer', 'build_wcs_buffer']

124 124 re_string_reconstruct call site: 00000 /src/augeas/gnulib/lib/./regex_internal.c:790
82 93 2 :

['build_wcs_upper_buffer', 're_string_realloc_buffers']

82 93 re_string_construct call site: 00000 /src/augeas/gnulib/lib/./regex_internal.c:92
82 89 2 :

['build_wcs_upper_buffer', 'build_upper_buffer']

82 89 extend_buffers call site: 00000 /src/augeas/gnulib/lib/./regexec.c:3979
76 76 1 :

['pathx_symtab_undefine']

76 399 aug_defvar call site: 00000 /src/augeas/src/augeas.c:895
51 62 2 :

['tree_child', 'tree_unlink']

51 62 record_var_meta call site: 00000 /src/augeas/src/augeas.c:878
42 42 1 :

['build_wcs_buffer']

42 42 re_string_construct call site: 00000 /src/augeas/gnulib/lib/./regex_internal.c:113
42 42 1 :

['build_wcs_buffer']

42 42 extend_buffers call site: 00000 /src/augeas/gnulib/lib/./regexec.c:3992

Runtime coverage analysis

Covered functions
299
Functions that are reachable but not covered
158
Reachable functions
166
Percentage of reachable functions covered
4.82%
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
augeas_fa_fuzzer.cc 1
src/fa.c 126
src/ref.c 1
src/memory.c 2
gnulib/lib/free.c 1
src/hash.c 15

Fuzzer: augeas_api_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 3892 79.6%
gold [1:9] 17 0.34%
yellow [10:29] 57 1.16%
greenyellow [30:49] 11 0.22%
lawngreen 50+ 909 18.6%
All colors 4886 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
4888 4896 2 :

['load_module_file', 'rpl_free']

4888 4896 load_module call site: 01824 /src/augeas/src/syntax.c:2018
599 599 2 :

['transit_state_bkref', 'check_subexp_matching_top']

1737 2380 check_matching call site: 01062 /src/augeas/gnulib/lib/./regexec.c:1051
548 560 2 :

['free_lens', 'rpl_free']

548 560 free_lns_error call site: 03920 /src/augeas/src/get.c:252
168 168 1 :

['fetch_number']

168 338 parse_dup_op call site: 00927 /src/augeas/gnulib/lib/./regcomp.c:2491
124 124 2 :

['build_wcs_upper_buffer', 'build_wcs_buffer']

124 124 re_string_reconstruct call site: 01056 /src/augeas/gnulib/lib/./regex_internal.c:790
82 93 2 :

['build_wcs_upper_buffer', 're_string_realloc_buffers']

82 93 re_string_construct call site: 00750 /src/augeas/gnulib/lib/./regex_internal.c:92
82 89 2 :

['build_wcs_upper_buffer', 'build_upper_buffer']

82 89 extend_buffers call site: 01074 /src/augeas/gnulib/lib/./regexec.c:3979
76 76 1 :

['pathx_symtab_undefine']

76 399 aug_defvar call site: 04790 /src/augeas/src/augeas.c:895
51 62 2 :

['tree_child', 'tree_unlink']

51 62 record_var_meta call site: 04801 /src/augeas/src/augeas.c:878
42 42 1 :

['build_wcs_buffer']

42 42 re_string_construct call site: 00771 /src/augeas/gnulib/lib/./regex_internal.c:113
42 42 1 :

['build_wcs_buffer']

42 42 extend_buffers call site: 01076 /src/augeas/gnulib/lib/./regexec.c:3992
35 35 1 :

['make_regexp_from_glob']

37 2006 func_regexp_or_glob call site: 00000 /src/augeas/src/pathx.c:805

Runtime coverage analysis

Covered functions
288
Functions that are reachable but not covered
763
Reachable functions
1044
Percentage of reachable functions covered
26.92%
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
augeas_api_fuzzer.cc 1
src/augeas.c 56
src/memory.c 2
src/ref.c 1
src/info.c 10
gnulib/lib/free.c 1
src/errcode.c 4
src/./internal.h 2
src/pathx.c 101
src/regexp.c 24
gnulib/lib/./regcomp.c 45
gnulib/lib/./regex_internal.c 33
src/internal.c 22
src/fa.c 128
gnulib/lib/mbrtowc.c 1
gnulib/lib/hard-locale.c 1
gnulib/lib/setlocale_null.c 3
gnulib/lib/./regex_internal.h 12
gnulib/lib/./regexec.c 54
gnulib/lib/./malloc/dynarray-skeleton.c 7
gnulib/lib/malloc/dynarray_resize.c 1
gnulib/lib/./malloc/dynarray.h 1
src/syntax.c 79
src/builtin.c 40
src/lens.c 68
src/jmt.c 63
src/transform.c 32
src/parser.y 20
src/lexer.l 5
src/lexer.c 25
src/parser.c 8
src/hash.c 15
src/get.c 68
src/ast.c 6
src/put.c 35

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
aug_match 48 25 52.08% ['augeas_escape_name_fuzzer']
pathx_expand_tree 62 34 54.83% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
free_term 52 19 36.53% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
free_value 43 20 46.51% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
interpreter_init 49 23 46.93% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
check_exp 118 23 19.49% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
peek_token 219 109 49.77% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
parse_expression 197 71 36.04% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
parse_bracket_exp 221 116 52.48% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
build_range_exp 60 31 51.66% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
parse_dup_op 110 38 34.54% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
create_initial_state 64 31 48.43% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
re_string_realloc_buffers 31 12 38.70% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
re_string_reconstruct 210 19 9.047% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
re_string_context_at 33 15 45.45% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
re_search_internal 235 106 45.10% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
extend_buffers 42 21 50.0% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
transit_state 35 15 42.85% ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
func_int 31 12 38.70% []

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
[] []
/src/augeas/src/lens.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/gnulib/lib/hard-locale.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/gnulib/lib/malloc/dynarray_resize.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/internal.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
/src/augeas/src/ref.c ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer']
/src/augeas/augeas_escape_name_fuzzer.cc ['augeas_escape_name_fuzzer'] ['augeas_escape_name_fuzzer']
/src/augeas/src/augeas.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
/src/augeas/src/ast.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/gnulib/lib/free.c ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer']
/src/augeas/src/lexer.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/./internal.h ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/parser.y ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/gnulib/lib/setlocale_null.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/syntax.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
/src/augeas/src/put.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/gnulib/lib/./regexec.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/hash.c ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/errcode.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
/src/augeas/gnulib/lib/mbrtowc.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/lexer.l ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/get.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_api_fuzzer']
/src/augeas/gnulib/lib/./malloc/dynarray.h ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/info.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
/src/augeas/gnulib/lib/./malloc/dynarray-skeleton.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/builtin.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
/src/augeas/augeas_fa_fuzzer.cc ['augeas_fa_fuzzer'] ['augeas_fa_fuzzer']
/src/augeas/src/jmt.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/gnulib/lib/./regex_internal.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/gnulib/lib/./regex_internal.h ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/src/fa.c ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer']
/src/augeas/src/transform.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
/src/augeas/src/regexp.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_api_fuzzer']
/src/augeas/gnulib/lib/./regcomp.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []
/src/augeas/augeas_api_fuzzer.cc ['augeas_api_fuzzer'] ['augeas_api_fuzzer']
/src/augeas/src/memory.c ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_fa_fuzzer', 'augeas_api_fuzzer']
/src/augeas/gnulib/lib/./selinux/selinux.h [] []
/src/augeas/src/pathx.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer']
/src/augeas/src/parser.c ['augeas_escape_name_fuzzer', 'augeas_api_fuzzer'] []

Directories in report

Directory
/src/augeas/gnulib/lib/./malloc/
/src/augeas/src/
/src/augeas/gnulib/lib/
/src/augeas/gnulib/lib/./
/src/augeas/src/./
/src/augeas/
/src/augeas/gnulib/lib/malloc/
/src/augeas/gnulib/lib/./selinux/