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

Fuzzer details

Fuzzer: libyaml_emitter_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 791 90.9%
gold [1:9] 4 0.45%
yellow [10:29] 4 0.45%
greenyellow [30:49] 1 0.11%
lawngreen 50+ 70 8.04%
All colors 870 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
2 2 1 :

['yaml_parser_set_parser_error']

2 2 yaml_parser_parse_stream_start call site: 00057 /src/libyaml/src/parser.c:320
0 2 1 :

['yaml_parser_set_reader_error']

0 2 yaml_parser_update_buffer call site: 00079 /src/libyaml/src/reader.c:463
0 0 None 3838 3934 yaml_parser_fetch_next_token call site: 00061 /src/libyaml/src/scanner.c:870
0 0 None 14 14 yaml_parser_fetch_stream_start call site: 00082 /src/libyaml/src/scanner.c:1303
0 0 None 2 2 yaml_parser_stale_simple_keys call site: 00058 /src/libyaml/src/scanner.c:1073
0 0 None 0 1742 yaml_parser_fetch_more_tokens call site: 00058 /src/libyaml/src/scanner.c:827
0 0 None 0 1742 yaml_parser_fetch_more_tokens call site: 00058 /src/libyaml/src/scanner.c:832
0 0 None 0 45 yaml_parser_initialize call site: 00003 /src/libyaml/src/api.c:182
0 0 None 0 42 yaml_parser_initialize call site: 00004 /src/libyaml/src/api.c:184
0 0 None 0 39 yaml_parser_initialize call site: 00005 /src/libyaml/src/api.c:186
0 0 None 0 36 yaml_parser_initialize call site: 00006 /src/libyaml/src/api.c:188
0 0 None 0 33 yaml_parser_initialize call site: 00007 /src/libyaml/src/api.c:190

Runtime coverage analysis

Covered functions
26
Functions that are reachable but not covered
130
Reachable functions
156
Percentage of reachable functions covered
16.67%
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
libyaml_emitter_fuzzer.c 3
libyamlapi.c 27
yaml_write_handler.h 1
libyamlparser.c 21
libyamlscanner.c 40
libyamlreader.c 4
libyamlemitter.c 47
libyamlwriter.c 2

Fuzzer: libyaml_scanner_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 18 5.07%
gold [1:9] 13 3.66%
yellow [10:29] 9 2.53%
greenyellow [30:49] 10 2.81%
lawngreen 50+ 305 85.9%
All colors 355 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 2 1 :

['yaml_parser_set_reader_error']

0 2 yaml_parser_update_buffer call site: 00049 /src/libyaml/src/reader.c:463
0 0 None 0 3744 yaml_parser_fetch_next_token call site: 00064 /src/libyaml/src/scanner.c:885
0 0 None 0 511 yaml_parser_fetch_directive call site: 00073 /src/libyaml/src/scanner.c:1374
0 0 None 0 505 yaml_parser_fetch_directive call site: 00074 /src/libyaml/src/scanner.c:1379
0 0 None 0 392 yaml_parser_fetch_flow_scalar call site: 00267 /src/libyaml/src/scanner.c:1864
0 0 None 0 348 yaml_parser_fetch_tag call site: 00206 /src/libyaml/src/scanner.c:1802
0 0 None 0 344 yaml_parser_fetch_plain_scalar call site: 00309 /src/libyaml/src/scanner.c:1895
0 0 None 0 253 yaml_parser_scan_tag_uri call site: 00119 /src/libyaml/src/scanner.c:2632
0 0 None 0 193 yaml_parser_fetch_anchor call site: 00194 /src/libyaml/src/scanner.c:1772
0 0 None 0 50 yaml_parser_fetch_value call site: 00188 /src/libyaml/src/scanner.c:1699
0 0 None 0 45 yaml_parser_initialize call site: 00003 /src/libyaml/src/api.c:182
0 0 None 0 42 yaml_parser_initialize call site: 00004 /src/libyaml/src/api.c:184

Runtime coverage analysis

Covered functions
58
Functions that are reachable but not covered
5
Reachable functions
63
Percentage of reachable functions covered
92.06%
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
libyaml_scanner_fuzzer.c 1
libyamlapi.c 12
libyamlscanner.c 41
libyamlreader.c 4

Fuzzer: libyaml_parser_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 21 4.08%
gold [1:9] 13 2.52%
yellow [10:29] 9 1.75%
greenyellow [30:49] 15 2.91%
lawngreen 50+ 456 88.7%
All colors 514 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 2 1 :

['yaml_parser_set_parser_error']

0 2 yaml_parser_parse_stream_start call site: 00029 /src/libyaml/src/parser.c:320
0 2 1 :

['yaml_parser_set_reader_error']

0 2 yaml_parser_update_buffer call site: 00051 /src/libyaml/src/reader.c:463
0 0 None 2 27 yaml_parser_parse_node call site: 00395 /src/libyaml/src/parser.c:609
0 0 None 2 2 yaml_strdup call site: 00356 /src/libyaml/src/api.c:63
0 0 None 0 8836 yaml_parser_parse_flow_mapping_key call site: 00469 /src/libyaml/src/parser.c:1107
0 0 None 0 5293 yaml_parser_parse_block_sequence_entry call site: 00415 /src/libyaml/src/parser.c:733
0 0 None 0 5293 yaml_parser_parse_block_mapping_key call site: 00431 /src/libyaml/src/parser.c:841
0 0 None 0 5287 yaml_parser_parse_flow_sequence_entry call site: 00447 /src/libyaml/src/parser.c:956
0 0 None 0 3744 yaml_parser_fetch_next_token call site: 00066 /src/libyaml/src/scanner.c:885
0 0 None 0 3591 yaml_parser_process_directives call site: 00348 /src/libyaml/src/parser.c:1248
0 0 None 0 1849 yaml_parser_process_directives call site: 00352 /src/libyaml/src/parser.c:1273
0 0 None 0 1849 yaml_parser_process_directives call site: 00362 /src/libyaml/src/parser.c:1289

Runtime coverage analysis

Covered functions
81
Functions that are reachable but not covered
6
Reachable functions
87
Percentage of reachable functions covered
93.1%
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
libyaml_parser_fuzzer.c 1
libyamlapi.c 14
libyamlparser.c 22
libyamlscanner.c 40
libyamlreader.c 4

Fuzzer: libyaml_loader_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 32 5.47%
gold [1:9] 11 1.88%
yellow [10:29] 14 2.39%
greenyellow [30:49] 14 2.39%
lawngreen 50+ 513 87.8%
All colors 584 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 2 1 :

['yaml_parser_set_parser_error']

0 2 yaml_parser_parse_stream_start call site: 00033 /src/libyaml/src/parser.c:320
0 2 1 :

['yaml_parser_set_reader_error']

0 2 yaml_parser_update_buffer call site: 00055 /src/libyaml/src/reader.c:463
0 0 None 2 27 yaml_parser_parse_node call site: 00399 /src/libyaml/src/parser.c:609
0 0 None 2 2 yaml_strdup call site: 00360 /src/libyaml/src/api.c:63
0 0 None 0 8836 yaml_parser_parse_flow_mapping_key call site: 00473 /src/libyaml/src/parser.c:1107
0 0 None 0 6490 yaml_parser_load call site: 00027 /src/libyaml/src/loader.c:95
0 0 None 0 5293 yaml_parser_parse_block_sequence_entry call site: 00419 /src/libyaml/src/parser.c:733
0 0 None 0 5293 yaml_parser_parse_block_mapping_key call site: 00435 /src/libyaml/src/parser.c:841
0 0 None 0 5287 yaml_parser_parse_flow_sequence_entry call site: 00451 /src/libyaml/src/parser.c:956
0 0 None 0 3744 yaml_parser_fetch_next_token call site: 00070 /src/libyaml/src/scanner.c:885
0 0 None 0 3591 yaml_parser_process_directives call site: 00352 /src/libyaml/src/parser.c:1248
0 0 None 0 2391 yaml_parser_load_nodes call site: 00535 /src/libyaml/src/loader.c:235

Runtime coverage analysis

Covered functions
96
Functions that are reachable but not covered
6
Reachable functions
102
Percentage of reachable functions covered
94.12%
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
libyaml_loader_fuzzer.c 1
libyamlapi.c 15
libyamlloader.c 14
libyamlparser.c 22
libyamlscanner.c 40
libyamlreader.c 4

Fuzzer: libyaml_reformatter_alt_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 71 7.72%
gold [1:9] 22 2.39%
yellow [10:29] 19 2.06%
greenyellow [30:49] 13 1.41%
lawngreen 50+ 794 86.3%
All colors 919 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
24 24 1 :

['yaml_emitter_write_bom']

24 24 yaml_emitter_emit_stream_start call site: 00633 /src/libyaml/src/emitter.c:533
0 75 2 :

['yaml_emitter_write_indent', 'yaml_emitter_write_indicator']

0 95 yaml_emitter_emit_document_start call site: 00686 /src/libyaml/src/emitter.c:666
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_emit_stream_start call site: 00633 /src/libyaml/src/emitter.c:499
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_analyze_version_directive call site: 00643 /src/libyaml/src/emitter.c:1355
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_append_tag_directive call site: 00654 /src/libyaml/src/emitter.c:373
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_emit_document_end call site: 00786 /src/libyaml/src/emitter.c:708
0 2 1 :

['yaml_parser_set_parser_error']

0 2 yaml_parser_parse_stream_start call site: 00057 /src/libyaml/src/parser.c:320
0 2 1 :

['yaml_parser_set_reader_error']

0 2 yaml_parser_update_buffer call site: 00079 /src/libyaml/src/reader.c:463
0 0 None 24 24 yaml_emitter_emit_stream_start call site: 00633 /src/libyaml/src/emitter.c:518
0 0 None 4 618 yaml_emitter_emit_document_start call site: 00643 /src/libyaml/src/emitter.c:566
0 0 None 4 618 yaml_emitter_emit_document_start call site: 00653 /src/libyaml/src/emitter.c:576
0 0 None 4 562 yaml_emitter_emit_document_start call site: 00658 /src/libyaml/src/emitter.c:582

Runtime coverage analysis

Covered functions
162
Functions that are reachable but not covered
9
Reachable functions
171
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
libyaml_reformatter_alt_fuzzer.c 1
libyamlapi.c 21
yaml_write_handler.h 1
libyamlloader.c 14
libyamlparser.c 22
libyamlscanner.c 40
libyamlreader.c 4
libyamldumper.c 11
libyamlemitter.c 47
libyamlwriter.c 2

Fuzzer: libyaml_reformatter_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 56 7.05%
gold [1:9] 24 3.02%
yellow [10:29] 12 1.51%
greenyellow [30:49] 13 1.63%
lawngreen 50+ 689 86.7%
All colors 794 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 75 2 :

['yaml_emitter_write_indent', 'yaml_emitter_write_indicator']

0 95 yaml_emitter_emit_document_start call site: 00600 /src/libyaml/src/emitter.c:666
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_emit_stream_start call site: 00546 /src/libyaml/src/emitter.c:499
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_analyze_version_directive call site: 00556 /src/libyaml/src/emitter.c:1355
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_append_tag_directive call site: 00567 /src/libyaml/src/emitter.c:373
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_emit_document_end call site: 00701 /src/libyaml/src/emitter.c:708
0 2 1 :

['yaml_parser_set_parser_error']

0 2 yaml_parser_parse_stream_start call site: 00053 /src/libyaml/src/parser.c:320
0 2 1 :

['yaml_parser_set_reader_error']

0 2 yaml_parser_update_buffer call site: 00075 /src/libyaml/src/reader.c:463
0 0 None 4 618 yaml_emitter_emit_document_start call site: 00556 /src/libyaml/src/emitter.c:566
0 0 None 4 618 yaml_emitter_emit_document_start call site: 00566 /src/libyaml/src/emitter.c:576
0 0 None 4 562 yaml_emitter_emit_document_start call site: 00572 /src/libyaml/src/emitter.c:582
0 0 None 4 415 yaml_emitter_emit_document_start call site: 00580 /src/libyaml/src/emitter.c:605
0 0 None 4 339 yaml_emitter_emit_document_start call site: 00581 /src/libyaml/src/emitter.c:608

Runtime coverage analysis

Covered functions
136
Functions that are reachable but not covered
7
Reachable functions
143
Percentage of reachable functions covered
95.1%
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
libyaml_reformatter_fuzzer.c 1
libyamlapi.c 19
yaml_write_handler.h 1
libyamlparser.c 22
libyamlscanner.c 40
libyamlreader.c 4
libyamlemitter.c 47
libyamlwriter.c 2

Fuzzer: libyaml_dumper_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 85 8.48%
gold [1:9] 32 3.19%
yellow [10:29] 22 2.19%
greenyellow [30:49] 20 1.99%
lawngreen 50+ 843 84.1%
All colors 1002 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
24 24 1 :

['yaml_emitter_write_bom']

24 24 yaml_emitter_emit_stream_start call site: 00088 /src/libyaml/src/emitter.c:533
2 2 1 :

['strlen']

2 42 yaml_document_add_scalar call site: 00881 /src/libyaml/src/api.c:1218
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_emit_stream_start call site: 00088 /src/libyaml/src/emitter.c:499
0 2 1 :

['yaml_emitter_set_emitter_error']

0 2 yaml_emitter_analyze_version_directive call site: 00098 /src/libyaml/src/emitter.c:1355
0 2 1 :

['yaml_parser_set_parser_error']

0 2 yaml_parser_parse_stream_start call site: 00322 /src/libyaml/src/parser.c:320
0 2 1 :

['yaml_parser_set_reader_error']

0 2 yaml_parser_update_buffer call site: 00344 /src/libyaml/src/reader.c:463
0 0 None 24 24 yaml_emitter_emit_stream_start call site: 00088 /src/libyaml/src/emitter.c:518
0 0 None 4 618 yaml_emitter_emit_document_start call site: 00098 /src/libyaml/src/emitter.c:566
0 0 None 4 562 yaml_emitter_emit_document_start call site: 00115 /src/libyaml/src/emitter.c:582
0 0 None 4 415 yaml_emitter_emit_document_start call site: 00123 /src/libyaml/src/emitter.c:605
0 0 None 4 339 yaml_emitter_emit_document_start call site: 00124 /src/libyaml/src/emitter.c:608
0 0 None 4 302 yaml_emitter_emit_document_start call site: 00126 /src/libyaml/src/emitter.c:615

Runtime coverage analysis

Covered functions
170
Functions that are reachable but not covered
12
Reachable functions
182
Percentage of reachable functions covered
93.41%
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
libyaml_dumper_fuzzer.c 4
libyamlapi.c 29
yaml_write_handler.h 1
libyamldumper.c 11
libyamlemitter.c 47
libyamlwriter.c 2
libyamlloader.c 14
libyamlparser.c 22
libyamlscanner.c 40
libyamlreader.c 4

Fuzzer: libyaml_deconstructor_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 166 16.7%
gold [1:9] 16 1.61%
yellow [10:29] 8 0.80%
greenyellow [30:49] 19 1.91%
lawngreen 50+ 784 78.9%
All colors 993 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
24 24 1 :

['yaml_emitter_write_bom']

24 24 yaml_emitter_emit_stream_start call site: 00108 /src/libyaml/src/emitter.c:533
19 19 1 :

['yaml_emitter_analyze_anchor']

19 252 yaml_emitter_analyze_event call site: 00091 /src/libyaml/src/emitter.c:1722
19 19 1 :

['yaml_emitter_analyze_anchor']

19 31 yaml_emitter_analyze_event call site: 00102 /src/libyaml/src/emitter.c:1739
19 19 1 :

['yaml_emitter_analyze_anchor']

19 31 yaml_emitter_analyze_event call site: 00104 /src/libyaml/src/emitter.c:1753
7 7 1 :

['yaml_emitter_analyze_version_directive']

33 625 yaml_emitter_emit_document_start call site: 00117 /src/libyaml/src/emitter.c:565
4 113 3 :

['strlen', 'yaml_emitter_write_tag_handle', 'yaml_emitter_write_tag_content']

4 302 yaml_emitter_emit_document_start call site: 00146 /src/libyaml/src/emitter.c:619
4 86 6 :

['yaml_malloc', 'strlen', 'yaml_free', 'yaml_check_utf8', 'yaml_strdup', 'yaml_stack_extend']

4 86 yaml_document_start_event_initialize call site: 00336 /src/libyaml/src/api.c:732
2 22 2 :

['yaml_emitter_set_emitter_error', 'yaml_emitter_flush']

2 97 yaml_emitter_emit_document_start call site: 00117 /src/libyaml/src/emitter.c:555
2 2 1 :

['yaml_emitter_set_emitter_error']

2 2 yaml_emitter_emit_stream_start call site: 00108 /src/libyaml/src/emitter.c:499
2 2 1 :

['yaml_emitter_set_emitter_error']

2 2 yaml_emitter_emit_document_end call site: 00264 /src/libyaml/src/emitter.c:708
2 2 1 :

['yaml_emitter_set_emitter_error']

2 2 yaml_emitter_analyze_tag call site: 00097 /src/libyaml/src/emitter.c:1468
0 76 1 :

['yaml_emitter_write_indicator']

0 151 yaml_emitter_process_tag call site: 00182 /src/libyaml/src/emitter.c:1283

Runtime coverage analysis

Covered functions
134
Functions that are reachable but not covered
20
Reachable functions
154
Percentage of reachable functions covered
87.01%
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
libyaml_deconstructor_fuzzer.c 1
libyamlapi.c 29
yaml_write_handler.h 1
libyamlemitter.c 47
libyamlwriter.c 2
libyamlparser.c 22
libyamlscanner.c 40
libyamlreader.c 4

Fuzzer: libyaml_deconstructor_alt_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 173 17.1%
gold [1:9] 11 1.09%
yellow [10:29] 13 1.28%
greenyellow [30:49] 12 1.18%
lawngreen 50+ 800 79.2%
All colors 1009 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
1238 1238 1 :

['yaml_emitter_dump_alias']

1238 1238 yaml_emitter_dump_node call site: 00970 /src/libyaml/src/dumper.c:275
24 24 1 :

['yaml_emitter_write_bom']

24 24 yaml_emitter_emit_stream_start call site: 00109 /src/libyaml/src/emitter.c:533
19 19 1 :

['yaml_emitter_analyze_anchor']

19 252 yaml_emitter_analyze_event call site: 00092 /src/libyaml/src/emitter.c:1722
19 19 1 :

['yaml_emitter_analyze_anchor']

19 31 yaml_emitter_analyze_event call site: 00103 /src/libyaml/src/emitter.c:1739
19 19 1 :

['yaml_emitter_analyze_anchor']

19 31 yaml_emitter_analyze_event call site: 00105 /src/libyaml/src/emitter.c:1753
8 8 1 :

['yaml_emitter_generate_anchor']

1246 5025 yaml_emitter_dump_node call site: 00969 /src/libyaml/src/dumper.c:270
7 7 1 :

['yaml_emitter_analyze_version_directive']

33 625 yaml_emitter_emit_document_start call site: 00118 /src/libyaml/src/emitter.c:565
4 113 3 :

['strlen', 'yaml_emitter_write_tag_handle', 'yaml_emitter_write_tag_content']

4 302 yaml_emitter_emit_document_start call site: 00147 /src/libyaml/src/emitter.c:619
4 89 6 :

['yaml_malloc', 'strlen', 'yaml_free', 'yaml_check_utf8', 'yaml_strdup', 'yaml_stack_extend']

4 89 yaml_document_initialize call site: 00338 /src/libyaml/src/api.c:1073
2 22 2 :

['yaml_emitter_set_emitter_error', 'yaml_emitter_flush']

2 97 yaml_emitter_emit_document_start call site: 00118 /src/libyaml/src/emitter.c:555
2 2 1 :

['yaml_emitter_set_emitter_error']

2 2 yaml_emitter_emit_stream_start call site: 00109 /src/libyaml/src/emitter.c:499
2 2 1 :

['yaml_emitter_set_emitter_error']

2 2 yaml_emitter_emit_document_end call site: 00265 /src/libyaml/src/emitter.c:708

Runtime coverage analysis

Covered functions
141
Functions that are reachable but not covered
22
Reachable functions
163
Percentage of reachable functions covered
86.5%
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
libyaml_deconstructor_alt_fuzzer.c 1
libyamlapi.c 27
yaml_write_handler.h 1
libyamldumper.c 11
libyamlemitter.c 47
libyamlwriter.c 2
libyamlparser.c 22
libyamlscanner.c 40
libyamlreader.c 4

Fuzz engine guidance

This sections provides heuristics that can be used as input to a fuzz engine when running a given fuzz target. The current focus is on providing input that is usable by libFuzzer.

libyaml_emitter_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['yaml_parser_fetch_stream_start', 'LLVMFuzzerTestOneInput', 'yaml_stream_start_event_initialize', 'yaml_event_delete', 'yaml_parser_initialize', 'yaml_emitter_initialize', 'yaml_parser_delete', 'yaml_parser_fetch_more_tokens']

libyaml_scanner_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['yaml_parser_initialize', 'yaml_parser_delete', 'yaml_parser_determine_encoding', 'yaml_parser_update_buffer', 'yaml_parser_fetch_directive', 'yaml_parser_fetch_anchor', 'yaml_parser_fetch_tag', 'yaml_parser_fetch_block_scalar', 'yaml_parser_fetch_flow_scalar', 'yaml_parser_fetch_plain_scalar']

libyaml_parser_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['yaml_parser_initialize', 'yaml_parser_append_tag_directive', 'yaml_parser_state_machine', 'yaml_parser_determine_encoding', 'yaml_parser_update_buffer', 'yaml_parser_fetch_directive', 'yaml_parser_fetch_anchor', 'yaml_parser_fetch_tag', 'yaml_parser_fetch_block_scalar', 'yaml_parser_fetch_flow_scalar']

libyaml_loader_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['yaml_parser_initialize', 'yaml_parser_load_scalar', 'yaml_parser_append_tag_directive', 'yaml_parser_state_machine', 'yaml_parser_load_sequence', 'yaml_parser_load_mapping', 'yaml_parser_determine_encoding', 'yaml_parser_update_buffer', 'yaml_parser_fetch_directive', 'yaml_parser_fetch_anchor']

libyaml_reformatter_alt_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['yaml_parser_initialize', 'yaml_emitter_initialize', 'yaml_emitter_analyze_tag_directive', 'yaml_parser_load_scalar', 'yaml_emitter_write_plain_scalar', 'yaml_emitter_emit_document_end', 'yaml_parser_append_tag_directive', 'yaml_parser_state_machine', 'yaml_parser_load_sequence', 'yaml_parser_load_mapping']

libyaml_reformatter_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['yaml_parser_initialize', 'yaml_emitter_initialize', 'yaml_emitter_analyze_tag_directive', 'yaml_emitter_write_plain_scalar', 'yaml_emitter_emit_document_end', 'yaml_parser_append_tag_directive', 'yaml_parser_state_machine', 'yaml_emitter_analyze_anchor', 'yaml_emitter_append_tag_directive', 'yaml_emitter_emit_document_start']

libyaml_dumper_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['LLVMFuzzerTestOneInput', 'yaml_parser_initialize', 'yaml_emitter_initialize', 'yaml_emitter_analyze_tag_directive', 'yaml_emitter_write_plain_scalar', 'yaml_emitter_analyze_anchor', 'yaml_emitter_state_machine', 'yaml_emitter_flush', 'yaml_stack_extend', 'yaml_parser_append_tag_directive']

libyaml_deconstructor_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['yaml_emitter_write_double_quoted_scalar', 'yaml_emitter_state_machine', 'yaml_emitter_write_plain_scalar', 'yaml_document_start_event_initialize', 'yaml_parser_initialize', 'yaml_strdup', 'yaml_emitter_initialize', 'yaml_emitter_write_indent', 'yaml_emitter_emit_document_content', 'yaml_emitter_emit']

libyaml_deconstructor_alt_fuzzer.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['yaml_emitter_write_double_quoted_scalar', 'yaml_emitter_state_machine', 'yaml_emitter_write_plain_scalar', 'yaml_document_initialize', 'yaml_strdup', 'yaml_parser_initialize', 'yaml_emitter_initialize', 'yaml_emitter_write_indent', 'yaml_emitter_dump', 'yaml_emitter_emit_document_content']

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/libyaml/src/reader.c ['libyaml_emitter_fuzzer', 'libyaml_scanner_fuzzer', 'libyaml_parser_fuzzer', 'libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer'] ['libyaml_emitter_fuzzer', 'libyaml_scanner_fuzzer', 'libyaml_parser_fuzzer', 'libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer']
/src/libyaml/src/emitter.c ['libyaml_emitter_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer'] ['libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer']
/src/libyaml_scanner_fuzzer.c ['libyaml_scanner_fuzzer'] ['libyaml_scanner_fuzzer']
/src/libyaml/src/scanner.c ['libyaml_emitter_fuzzer', 'libyaml_scanner_fuzzer', 'libyaml_parser_fuzzer', 'libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer'] ['libyaml_emitter_fuzzer', 'libyaml_scanner_fuzzer', 'libyaml_parser_fuzzer', 'libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer']
/src/libyaml_reformatter_alt_fuzzer.c ['libyaml_reformatter_alt_fuzzer'] ['libyaml_reformatter_alt_fuzzer']
/src/libyaml/src/dumper.c ['libyaml_reformatter_alt_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_alt_fuzzer'] ['libyaml_reformatter_alt_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_alt_fuzzer']
/src/libyaml_emitter_fuzzer.c ['libyaml_emitter_fuzzer'] ['libyaml_emitter_fuzzer']
/src/yaml_write_handler.h ['libyaml_emitter_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer'] ['libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer']
/src/libyaml/src/api.c ['libyaml_emitter_fuzzer', 'libyaml_scanner_fuzzer', 'libyaml_parser_fuzzer', 'libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer'] ['libyaml_emitter_fuzzer', 'libyaml_scanner_fuzzer', 'libyaml_parser_fuzzer', 'libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer']
/src/libyaml/src/writer.c ['libyaml_emitter_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer'] ['libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer']
/src/libyaml_reformatter_fuzzer.c ['libyaml_reformatter_fuzzer'] ['libyaml_reformatter_fuzzer']
/src/libyaml/src/parser.c ['libyaml_emitter_fuzzer', 'libyaml_parser_fuzzer', 'libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer'] ['libyaml_emitter_fuzzer', 'libyaml_parser_fuzzer', 'libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_reformatter_fuzzer', 'libyaml_dumper_fuzzer', 'libyaml_deconstructor_fuzzer', 'libyaml_deconstructor_alt_fuzzer']
/src/libyaml/src/loader.c ['libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_dumper_fuzzer'] ['libyaml_loader_fuzzer', 'libyaml_reformatter_alt_fuzzer', 'libyaml_dumper_fuzzer']
/src/libyaml_parser_fuzzer.c ['libyaml_parser_fuzzer'] ['libyaml_parser_fuzzer']
/src/libyaml_deconstructor_alt_fuzzer.c ['libyaml_deconstructor_alt_fuzzer'] ['libyaml_deconstructor_alt_fuzzer']
/src/libyaml_loader_fuzzer.c ['libyaml_loader_fuzzer'] ['libyaml_loader_fuzzer']
/src/libyaml_deconstructor_fuzzer.c ['libyaml_deconstructor_fuzzer'] ['libyaml_deconstructor_fuzzer']
/src/libyaml_dumper_fuzzer.c ['libyaml_dumper_fuzzer'] ['libyaml_dumper_fuzzer']

Directories in report

Directory
/src/
/src/libyaml/src/