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: json_load_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 20 16.3%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 102 83.6%
All colors 122 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
4 14 loader_log call site: 00014 util_SubmitDebugUtilsMessageEXT
2 8 loader_read_entire_file call site: 00008 create_callback_file
2 23 loader_read_entire_file call site: 00023 loader_log
2 79 ensure call site: 00079 loader_free
2 92 print_number call site: 00092 ensure
1 12 loader_read_entire_file call site: 00012 loader_log
1 21 loader_calloc call site: 00021 loader_log
1 66 parse_array call site: 00066 buffer_skip_whitespace
1 68 loader_cJSON_ParseWithLengthOpts call site: 00068 loader_log
1 72 loader_instance_heap_free call site: 00072 loader_cJSON_Delete
1 82 loader_realloc call site: 00082 loader_free
1 96 print_string call site: 00096 ensure

Runtime coverage analysis

Covered functions
43
Functions that are reachable but not covered
23
Reachable functions
56
Percentage of reachable functions covered
58.93%
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
json_load_fuzzer.c 1
vulkan-loader/loader/loader_json.c 2
fuzz_header.h 1
vulkan-loader/loader/log.c 1
vulkan-loader/loader/debug_utils.c 3
vulkan-loader/loader/generated/vk_object_types.h 1
vulkan-loader/loader/allocation.c 6
vulkan-loader/loader/cJSON.c 24

Fuzzer: settings_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 154 29.4%
gold [1:9] 5 0.95%
yellow [10:29] 9 1.72%
greenyellow [30:49] 2 0.38%
lawngreen 50+ 353 67.4%
All colors 523 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
16 294 log_settings call site: 00294 loader_log
12 121 loader_realloc call site: 00121 print_number
11 439 loader_read_layer_json call site: 00439 loader_parse_json_string
9 234 parse_device_configurations call site: 00234 parse_device_configuration
8 138 print_string_ptr call site: 00138 print_array
8 147 update_offset call site: 00147 print_value
8 224 parse_additional_drivers call site: 00224 parse_additional_driver
7 431 loader_read_layer_json call site: 00431 loader_parse_json_string
7 472 loader_read_layer_json call site: 00472 loader_parse_json_string
6 264 update_global_loader_settings call site: 00264 check_if_device_configurations_are_equal
4 42 loader_log call site: 00042 util_SubmitDebugUtilsMessageEXT
4 258 free_loader_settings call site: 00258 free_driver_configuration

Runtime coverage analysis

Covered functions
105
Functions that are reachable but not covered
54
Reachable functions
151
Percentage of reachable functions covered
64.24%
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
settings_fuzzer.c 3
vulkan-loader/loader/settings.c 28
vulkan-loader/loader/loader_environment.c 1
vulkan-loader/loader/allocation.c 7
vulkan-loader/loader/vk_loader_platform.h 10
vulkan-loader/loader/log.c 4
vulkan-loader/loader/debug_utils.c 3
vulkan-loader/loader/generated/vk_object_types.h 1
vulkan-loader/loader/loader_json.c 5
fuzz_header.h 1
vulkan-loader/loader/cJSON.c 31
vulkan-loader/loader/loader.c 24
vulkan-loader/loader/wsi.c 1

Fuzzer: instance_create_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 458 39.1%
gold [1:9] 8 0.68%
yellow [10:29] 6 0.51%
greenyellow [30:49] 1 0.08%
lawngreen 50+ 697 59.5%
All colors 1170 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
109 893 loader_icd_scan call site: 00893 loader_validate_instance_extensions
60 1003 loader_destroy_pointer_layer_list call site: 01003 loader_enable_instance_layers
41 847 loader_handle_load_library_error call site: 00847 fixup_library_binary_path
35 1099 vkCreateInstance call site: 01099 fill_out_enabled_instance_extensions
28 1135 vkCreateInstance call site: 01135 vkDestroyInstance
16 294 log_settings call site: 00294 loader_log
13 765 loader_icd_scan call site: 00765 loader_add_direct_driver
12 1085 vkCreateInstance call site: 01085 loader_icd_close_objects
10 330 parse_layers_disable_filter_environment_var call site: 00330 loader_log
10 784 loader_settings_get_additional_driver_files call site: 00784 prepend_if_manifest_file
9 251 parse_device_configurations call site: 00251 parse_device_configuration
8 241 parse_additional_drivers call site: 00241 parse_additional_driver

Runtime coverage analysis

Covered functions
164
Functions that are reachable but not covered
102
Reachable functions
260
Percentage of reachable functions covered
60.77%
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
instance_create_fuzzer.c 3
vulkan-loader/loader/trampoline.c 4
vulkan-loader/loader/log.c 3
vulkan-loader/loader/debug_utils.c 9
vulkan-loader/loader/generated/vk_object_types.h 1
vulkan-loader/loader/allocation.c 11
vulkan-loader/loader/vk_loader_platform.h 13
vulkan-loader/loader/loader.c 93
vulkan-loader/loader/settings.c 26
vulkan-loader/loader/loader_environment.c 9
vulkan-loader/loader/loader_json.c 5
fuzz_header.h 1
vulkan-loader/loader/cJSON.c 32
vulkan-loader/loader/wsi.c 1
vulkan-loader/loader/generated/vk_loader_extensions.c 3

Fuzzer: instance_create_advanced_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 524 44.3%
gold [1:9] 14 1.18%
yellow [10:29] 12 1.01%
greenyellow [30:49] 23 1.94%
lawngreen 50+ 609 51.5%
All colors 1182 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
109 900 loader_icd_scan call site: 00900 loader_validate_instance_extensions
60 1010 loader_destroy_pointer_layer_list call site: 01010 loader_enable_instance_layers
59 839 loader_parse_icd_manifest call site: 00839 loader_scanned_icd_add
35 1106 vkCreateInstance call site: 01106 fill_out_enabled_instance_extensions
32 806 loader_parse_icd_manifest call site: 00806 loader_cJSON_Print
28 1142 vkCreateInstance call site: 01142 vkDestroyInstance
16 301 log_settings call site: 00301 loader_log
13 772 loader_icd_scan call site: 00772 loader_add_direct_driver
12 145 loader_realloc call site: 00145 print_number
12 1092 vkCreateInstance call site: 01092 loader_icd_close_objects
10 337 parse_layers_disable_filter_environment_var call site: 00337 loader_log
10 791 loader_settings_get_additional_driver_files call site: 00791 prepend_if_manifest_file

Runtime coverage analysis

Covered functions
158
Functions that are reachable but not covered
112
Reachable functions
263
Percentage of reachable functions covered
57.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
instance_create_advanced_fuzzer.c 3
fuzz_header.h 3
vulkan-loader/loader/trampoline.c 4
vulkan-loader/loader/log.c 3
vulkan-loader/loader/debug_utils.c 9
vulkan-loader/loader/generated/vk_object_types.h 1
vulkan-loader/loader/allocation.c 11
vulkan-loader/loader/vk_loader_platform.h 13
vulkan-loader/loader/loader.c 93
vulkan-loader/loader/settings.c 26
vulkan-loader/loader/loader_environment.c 9
vulkan-loader/loader/loader_json.c 5
vulkan-loader/loader/cJSON.c 32
vulkan-loader/loader/wsi.c 1
vulkan-loader/loader/generated/vk_loader_extensions.c 3

Fuzzer: instance_enumerate_fuzzer_split_input

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 275 35.9%
gold [1:9] 54 7.04%
yellow [10:29] 18 2.34%
greenyellow [30:49] 24 3.13%
lawngreen 50+ 395 51.5%
All colors 766 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
21 692 verify_meta_layer_component_layers call site: 00692 update_meta_layer_extensions_from_component_layers
16 294 log_settings call site: 00294 loader_log
14 462 loader_read_layer_json call site: 00462 loader_parse_json_string
14 477 loader_read_layer_json call site: 00477 loader_parse_json_array_of_strings
14 743 loader_scan_for_implicit_layers call site: 00743 loader_open_layer_file
12 121 loader_realloc call site: 00121 print_number
10 329 parse_layers_disable_filter_environment_var call site: 00329 loader_log
9 234 parse_device_configurations call site: 00234 parse_device_configuration
8 138 print_string_ptr call site: 00138 print_array
8 147 update_offset call site: 00147 print_value
8 224 parse_additional_drivers call site: 00224 parse_additional_driver
7 454 loader_read_layer_json call site: 00454 loader_parse_json_string

Runtime coverage analysis

Covered functions
137
Functions that are reachable but not covered
74
Reachable functions
199
Percentage of reachable functions covered
62.81%
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
instance_enumerate_fuzzer.c 3
vulkan-loader/loader/trampoline.c 1
vulkan-loader/loader/settings.c 29
vulkan-loader/loader/loader_environment.c 8
vulkan-loader/loader/allocation.c 8
vulkan-loader/loader/vk_loader_platform.h 13
vulkan-loader/loader/log.c 4
vulkan-loader/loader/debug_utils.c 3
vulkan-loader/loader/generated/vk_object_types.h 1
vulkan-loader/loader/loader_json.c 5
fuzz_header.h 1
vulkan-loader/loader/cJSON.c 31
vulkan-loader/loader/loader.c 50
vulkan-loader/loader/wsi.c 1

Fuzzer: instance_enumerate_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 168 21.9%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 8 1.04%
lawngreen 50+ 590 77.0%
All colors 766 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
16 294 log_settings call site: 00294 loader_log
14 743 loader_scan_for_implicit_layers call site: 00743 loader_open_layer_file
12 121 loader_realloc call site: 00121 print_number
10 329 parse_layers_disable_filter_environment_var call site: 00329 loader_log
9 234 parse_device_configurations call site: 00234 parse_device_configuration
8 138 print_string_ptr call site: 00138 print_array
8 147 update_offset call site: 00147 print_value
8 224 parse_additional_drivers call site: 00224 parse_additional_driver
6 264 update_global_loader_settings call site: 00264 check_if_device_configurations_are_equal
6 531 check_name_matches_filter_environment_var call site: 00531 strcmp
4 42 loader_log call site: 00042 util_SubmitDebugUtilsMessageEXT
4 258 free_loader_settings call site: 00258 free_driver_configuration

Runtime coverage analysis

Covered functions
148
Functions that are reachable but not covered
65
Reachable functions
199
Percentage of reachable functions covered
67.34%
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
instance_enumerate_fuzzer.c 3
vulkan-loader/loader/trampoline.c 1
vulkan-loader/loader/settings.c 29
vulkan-loader/loader/loader_environment.c 8
vulkan-loader/loader/allocation.c 8
vulkan-loader/loader/vk_loader_platform.h 13
vulkan-loader/loader/log.c 4
vulkan-loader/loader/debug_utils.c 3
vulkan-loader/loader/generated/vk_object_types.h 1
vulkan-loader/loader/loader_json.c 5
fuzz_header.h 1
vulkan-loader/loader/cJSON.c 31
vulkan-loader/loader/loader.c 50
vulkan-loader/loader/wsi.c 1

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
vkGetDeviceProcAddr /src/vulkan-loader/loader/trampoline.c 2 ['N/A', 'N/A'] 3 0 166 36 17 8 0 1079 1069
vkGetInstanceProcAddr /src/vulkan-loader/loader/trampoline.c 2 ['N/A', 'N/A'] 7 0 70 19 8 37 0 945 824
terminator_EnumeratePhysicalDeviceGroups /src/vulkan-loader/loader/loader.c 3 ['N/A', 'N/A', 'N/A'] 5 0 1102 221 83 36 0 367 236
vkCreateDevice /src/vulkan-loader/loader/trampoline.c 4 ['N/A', 'N/A', 'N/A', 'N/A'] 7 0 26 5 2 48 0 337 132
loader_gpa_instance_terminator /src/vulkan-loader/loader/loader.c 2 ['N/A', 'N/A'] 6 0 234 48 23 30 0 313 125
vkEnumeratePhysicalDevices /src/vulkan-loader/loader/trampoline.c 3 ['N/A', 'N/A', 'N/A'] 5 0 159 31 12 45 0 309 116
terminator_CreateInstance /src/vulkan-loader/loader/loader.c 3 ['N/A', 'N/A', 'N/A'] 6 0 808 166 64 33 0 318 81
terminator_DebugReportMessageEXT /src/vulkan-loader/loader/debug_utils.c 8 ['N/A', 'int', 'int', 'size_t', 'size_t', 'int', 'N/A', 'N/A'] 3 0 53 12 5 8 0 79 71
terminator_CreateDisplayPlaneSurfaceKHR /src/vulkan-loader/loader/wsi.c 4 ['N/A', 'N/A', 'N/A', 'N/A'] 7 0 82 10 5 27 0 197 59
vkEnumeratePhysicalDeviceGroups /src/vulkan-loader/loader/trampoline.c 3 ['N/A', 'N/A', 'N/A'] 6 0 157 30 12 35 0 257 54

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

Functions statically reachable by fuzzers
26.0%
305 / 1164
Cyclomatic complexity statically reachable by fuzzers
67.0%
4889 / 7312

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 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

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.

json_load_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=['loader_log', 'loader_read_entire_file', 'ensure', 'print_number', 'loader_calloc', 'parse_array', 'loader_cJSON_ParseWithLengthOpts', 'loader_instance_heap_free']

settings_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=['log_settings', 'loader_realloc', 'loader_read_layer_json', 'parse_device_configurations', 'print_string_ptr', 'update_offset', 'parse_additional_drivers', 'update_global_loader_settings']

instance_create_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=['loader_icd_scan', 'loader_destroy_pointer_layer_list', 'loader_handle_load_library_error', 'vkCreateInstance', 'log_settings', 'parse_layers_disable_filter_environment_var', 'loader_settings_get_additional_driver_files']

instance_create_advanced_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=['loader_icd_scan', 'loader_destroy_pointer_layer_list', 'loader_parse_icd_manifest', 'vkCreateInstance', 'log_settings', 'loader_realloc']

instance_enumerate_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=['verify_meta_layer_component_layers', 'log_settings', 'loader_read_layer_json', 'loader_scan_for_implicit_layers', 'loader_realloc', 'parse_layers_disable_filter_environment_var', 'parse_device_configurations', 'print_string_ptr', 'update_offset']

instance_enumerate_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=['log_settings', 'loader_scan_for_implicit_layers', 'loader_realloc', 'parse_layers_disable_filter_environment_var', 'parse_device_configurations', 'print_string_ptr', 'update_offset', 'parse_additional_drivers', 'update_global_loader_settings', 'check_name_matches_filter_environment_var']

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
print 35 18 51.42% ['json_load_fuzzer', 'instance_enumerate_fuzzer_split_input', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer']
loader_init_global_debug_level 36 7 19.44% ['json_load_fuzzer', 'instance_enumerate_fuzzer_split_input', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer']
parse_additional_drivers 46 9 19.56% ['instance_enumerate_fuzzer_split_input', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer']
parse_device_configurations 44 6 13.63% ['instance_enumerate_fuzzer_split_input', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer']
log_settings 58 27 46.55% ['instance_enumerate_fuzzer_split_input', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer']
convertCoreObjectToDebugReportObject 88 7 7.954% ['json_load_fuzzer', 'instance_enumerate_fuzzer_split_input', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer']
loader_scan_for_direct_drivers 69 11 15.94% ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
loader_scanned_icd_add 158 27 17.08% ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
loader_icd_scan 113 62 54.86% ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
vk_string_validate 36 16 44.44% ['instance_enumerate_fuzzer_split_input', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer']
determine_filter_type 46 18 39.13% ['instance_enumerate_fuzzer_split_input', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer']
parse_layers_disable_filter_environment_var 63 12 19.04% ['instance_enumerate_fuzzer_split_input', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer']
check_name_matches_filter_environment_var 48 25 52.08% ['instance_enumerate_fuzzer_split_input', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer']
vkCreateInstance 211 88 41.70% ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
vkEnumerateInstanceExtensionProperties 67 33 49.25% ['instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']

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/vulkan-loader/loader/debug_utils.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/cJSON.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/instance_create_advanced_fuzzer.c ['instance_create_advanced_fuzzer'] ['instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/log.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/generated/vk_loader_extensions.c ['instance_create_fuzzer', 'instance_create_advanced_fuzzer'] []
/src/vulkan-loader/loader/loader.c ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/loader_linux.c [] []
/src/vulkan-loader/loader/wsi.c ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/gpa_helper.c [] []
/src/vulkan-loader/loader/loader_environment.c ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/extension_manual.c [] []
/src/fuzz_header.h ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/loader_json.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/loader.h [] []
/src/vulkan-loader/loader/dev_ext_trampoline.c [] []
/src/vulkan-loader/loader/terminator.c [] []
/src/settings_fuzzer.c ['settings_fuzzer'] ['settings_fuzzer']
/src/instance_enumerate_fuzzer.c ['instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/json_load_fuzzer.c ['json_load_fuzzer'] ['json_load_fuzzer']
/src/vulkan-loader/loader/settings.c ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/trampoline.c ['instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/instance_create_fuzzer.c ['instance_create_fuzzer'] ['instance_create_fuzzer']
/src/vulkan-loader/loader/generated/vk_object_types.h ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/vk_loader_platform.h ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/unknown_function_handling.c [] []
/src/vulkan-loader/loader/allocation.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_enumerate_fuzzer']
/src/vulkan-loader/loader/phys_dev_ext.c [] []

Directories in report

Directory
/src/vulkan-loader/loader/generated/
/src/vulkan-loader/loader/
/src/