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 25 19.5%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 103 80.4%
All colors 128 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
8 14 loader_log call site: 00014 util_SubmitDebugUtilsMessageEXT
2 8 loader_read_entire_file call site: 00008 create_callback_file
2 27 loader_read_entire_file call site: 00027 loader_log
2 85 ensure call site: 00085 loader_free
2 98 print_number call site: 00098 ensure
1 12 loader_read_entire_file call site: 00012 loader_log
1 25 loader_calloc call site: 00025 loader_log
1 50 parse_number call site: 00050 loader_free
1 72 parse_array call site: 00072 buffer_skip_whitespace
1 74 loader_cJSON_ParseWithLengthOpts call site: 00074 loader_log
1 78 loader_instance_heap_free call site: 00078 loader_cJSON_Delete
1 88 loader_realloc call site: 00088 loader_free

Runtime coverage analysis

Covered functions
43
Functions that are reachable but not covered
27
Reachable functions
60
Percentage of reachable functions covered
55.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.
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/vk_loader_platform.h 2
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 139 26.0%
gold [1:9] 7 1.31%
yellow [10:29] 17 3.18%
greenyellow [30:49] 6 1.12%
lawngreen 50+ 365 68.3%
All colors 534 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 293 log_settings call site: 00293 loader_log
12 127 loader_realloc call site: 00127 print_number
9 241 parse_device_configurations call site: 00241 parse_device_configuration
8 144 print_string_ptr call site: 00144 print_array
8 153 update_offset call site: 00153 print_value
8 231 parse_additional_drivers call site: 00231 parse_additional_driver
7 443 loader_read_layer_json call site: 00443 loader_parse_json_string
7 484 loader_read_layer_json call site: 00484 loader_parse_json_string
6 436 loader_read_layer_json call site: 00436 loader_log
5 264 check_if_layer_configurations_are_equal call site: 00264 check_if_device_configurations_are_equal
4 45 loader_platform_thread_lock_mutex call site: 00045 debug_utils_AnnotObjectToDebugReportObject
4 313 free_loader_settings call site: 00313 free_driver_configuration

Runtime coverage analysis

Covered functions
110
Functions that are reachable but not covered
50
Reachable functions
152
Percentage of reachable functions covered
67.11%
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 25
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 164 21.3%
gold [1:9] 3 0.39%
yellow [10:29] 1 0.13%
greenyellow [30:49] 15 1.95%
lawngreen 50+ 584 76.1%
All colors 767 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 293 log_settings call site: 00293 loader_log
14 744 loader_scan_for_implicit_layers call site: 00744 loader_open_layer_file
12 127 loader_realloc call site: 00127 print_number
11 335 parse_layers_disable_filter_environment_var call site: 00335 loader_log
9 241 parse_device_configurations call site: 00241 parse_device_configuration
8 144 print_string_ptr call site: 00144 print_array
8 153 update_offset call site: 00153 print_value
8 231 parse_additional_drivers call site: 00231 parse_additional_driver
6 543 check_name_matches_filter_environment_var call site: 00543 name_segment_matches_filter_value
5 264 check_if_layer_configurations_are_equal call site: 00264 check_if_device_configurations_are_equal
4 45 loader_platform_thread_lock_mutex call site: 00045 debug_utils_AnnotObjectToDebugReportObject
4 313 free_loader_settings call site: 00313 free_driver_configuration

Runtime coverage analysis

Covered functions
150
Functions that are reachable but not covered
64
Reachable functions
200
Percentage of reachable functions covered
68.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.
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 9
vulkan-loader/loader/allocation.c 7
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 52
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 450 38.5%
gold [1:9] 7 0.59%
yellow [10:29] 12 1.02%
greenyellow [30:49] 7 0.59%
lawngreen 50+ 691 59.2%
All colors 1167 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
151 912 vkCreateInstance call site: 00912 loader_enable_instance_layers
45 861 loader_handle_load_library_error call site: 00861 fixup_library_binary_path
35 1097 vkCreateInstance call site: 01097 fill_out_enabled_instance_extensions
27 1133 vkCreateInstance call site: 01133 vkDestroyInstance
16 307 log_settings call site: 00307 loader_log
14 775 loader_icd_scan call site: 00775 loader_add_direct_driver
13 795 loader_settings_get_additional_driver_files call site: 00795 prepend_if_manifest_file
12 1082 vkCreateInstance call site: 01082 loader_icd_close_objects
11 343 parse_layers_disable_filter_environment_var call site: 00343 loader_log
9 265 parse_device_configurations call site: 00265 parse_device_configuration
8 255 parse_additional_drivers call site: 00255 parse_additional_driver
6 666 check_name_matches_filter_environment_var call site: 00666 name_segment_matches_filter_value

Runtime coverage analysis

Covered functions
169
Functions that are reachable but not covered
103
Reachable functions
266
Percentage of reachable functions covered
61.28%
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 5
vulkan-loader/loader/log.c 3
vulkan-loader/loader/debug_utils.c 9
vulkan-loader/loader/vk_loader_platform.h 13
vulkan-loader/loader/generated/vk_object_types.h 1
vulkan-loader/loader/allocation.c 11
vulkan-loader/loader/loader.c 97
vulkan-loader/loader/settings.c 26
vulkan-loader/loader/loader_environment.c 10
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_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 315 41.0%
gold [1:9] 45 5.86%
yellow [10:29] 21 2.73%
greenyellow [30:49] 15 1.95%
lawngreen 50+ 371 48.3%
All colors 767 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
60 463 loader_read_layer_json call site: 00463 loader_parse_json_array_of_strings
32 685 loader_scan_for_implicit_layers call site: 00685 update_meta_layer_extensions_from_component_layers
16 293 log_settings call site: 00293 loader_log
15 669 remove_all_non_valid_override_layers call site: 00669 loader_parse_instance_layers
15 722 loader_scan_for_implicit_layers call site: 00722 loader_append_layer_property
14 744 loader_scan_for_implicit_layers call site: 00744 loader_open_layer_file
12 127 loader_realloc call site: 00127 print_number
12 541 loader_scan_for_implicit_layers call site: 00541 check_name_matches_filter_environment_var
11 335 parse_layers_disable_filter_environment_var call site: 00335 loader_log
9 241 parse_device_configurations call site: 00241 parse_device_configuration
9 554 loader_getenv call site: 00554 loader_log
8 144 print_string_ptr call site: 00144 print_array

Runtime coverage analysis

Covered functions
129
Functions that are reachable but not covered
82
Reachable functions
200
Percentage of reachable functions covered
59.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.
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 9
vulkan-loader/loader/allocation.c 7
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 52
vulkan-loader/loader/wsi.c 1

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 520 44.1%
gold [1:9] 22 1.86%
yellow [10:29] 6 0.50%
greenyellow [30:49] 1 0.08%
lawngreen 50+ 630 53.4%
All colors 1179 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
151 919 vkCreateInstance call site: 00919 loader_enable_instance_layers
101 816 loader_settings_get_additional_driver_files call site: 00816 loader_parse_icd_manifest
35 1104 vkCreateInstance call site: 01104 fill_out_enabled_instance_extensions
27 1140 vkCreateInstance call site: 01140 vkDestroyInstance
16 314 log_settings call site: 00314 loader_log
14 782 loader_icd_scan call site: 00782 loader_add_direct_driver
13 802 loader_settings_get_additional_driver_files call site: 00802 prepend_if_manifest_file
12 158 loader_realloc call site: 00158 print_number
12 1089 vkCreateInstance call site: 01089 loader_icd_close_objects
11 350 parse_layers_disable_filter_environment_var call site: 00350 loader_log
9 272 parse_device_configurations call site: 00272 parse_device_configuration
8 175 print_string_ptr call site: 00175 print_array

Runtime coverage analysis

Covered functions
162
Functions that are reachable but not covered
114
Reachable functions
269
Percentage of reachable functions covered
57.62%
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 5
vulkan-loader/loader/log.c 3
vulkan-loader/loader/debug_utils.c 9
vulkan-loader/loader/vk_loader_platform.h 13
vulkan-loader/loader/generated/vk_object_types.h 1
vulkan-loader/loader/allocation.c 11
vulkan-loader/loader/loader.c 97
vulkan-loader/loader/settings.c 26
vulkan-loader/loader/loader_environment.c 10
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

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 9 0 1155 1145
vkGetInstanceProcAddr /src/vulkan-loader/loader/trampoline.c 2 ['N/A', 'N/A'] 7 0 70 19 8 38 0 1026 899
terminator_EnumeratePhysicalDeviceGroups /src/vulkan-loader/loader/loader.c 3 ['N/A', 'N/A', 'N/A'] 5 0 1231 258 96 45 0 431 288
vkCreateDevice /src/vulkan-loader/loader/trampoline.c 4 ['N/A', 'N/A', 'N/A', 'N/A'] 7 0 24 5 2 49 0 344 135
loader_gpa_instance_terminator /src/vulkan-loader/loader/loader.c 2 ['N/A', 'N/A'] 6 0 234 48 23 31 0 324 130
vkEnumeratePhysicalDevices /src/vulkan-loader/loader/trampoline.c 3 ['N/A', 'N/A', 'N/A'] 5 0 171 31 12 46 0 314 119
terminator_CreateInstance /src/vulkan-loader/loader/loader.c 3 ['N/A', 'N/A', 'N/A'] 6 0 814 167 63 39 0 330 80

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

Functions statically reachable by fuzzers
24.0%
300 / 1254
Cyclomatic complexity statically reachable by fuzzers
64.0%
4976 / 7728

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_number', 'parse_array', 'loader_cJSON_ParseWithLengthOpts']

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', 'parse_device_configurations', 'print_string_ptr', 'update_offset', 'parse_additional_drivers', 'loader_read_layer_json', 'check_if_layer_configurations_are_equal']

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', 'check_name_matches_filter_environment_var', 'check_if_layer_configurations_are_equal']

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

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=['loader_read_layer_json', 'loader_scan_for_implicit_layers', 'log_settings', 'remove_all_non_valid_override_layers', 'loader_realloc', 'parse_layers_disable_filter_environment_var', 'parse_device_configurations']

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=['vkCreateInstance', 'loader_settings_get_additional_driver_files', 'log_settings', 'loader_icd_scan', 'loader_realloc', 'parse_layers_disable_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', 'instance_create_advanced_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer', 'settings_fuzzer']
loader_init_global_debug_level 37 8 21.62% ['json_load_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer', 'settings_fuzzer']
parse_additional_drivers 46 9 19.56% ['instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer', 'settings_fuzzer']
parse_device_configurations 48 6 12.5% ['instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer', 'settings_fuzzer']
log_settings 60 29 48.33% ['instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer', 'settings_fuzzer']
loader_implicit_layer_is_enabled 64 34 53.12% ['instance_create_fuzzer', 'instance_enumerate_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
vk_string_validate 43 18 41.86% ['instance_create_fuzzer', 'instance_enumerate_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
determine_filter_type 46 18 39.13% ['instance_create_fuzzer', 'instance_enumerate_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
parse_layers_disable_filter_environment_var 60 12 20.0% ['instance_create_fuzzer', 'instance_enumerate_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
check_name_matches_filter_environment_var 40 19 47.5% ['instance_create_fuzzer', 'instance_enumerate_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
vkEnumerateInstanceExtensionProperties 67 33 49.25% ['instance_enumerate_fuzzer', 'instance_enumerate_fuzzer_split_input']
util_SubmitDebugUtilsMessageEXT 31 17 54.83% ['json_load_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer', 'settings_fuzzer']
convertCoreObjectToDebugReportObject 88 7 7.954% ['json_load_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer', 'settings_fuzzer']
loader_scan_for_direct_drivers 69 11 15.94% ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
loader_scanned_icd_add 166 30 18.07% ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
vkCreateInstance 207 86 41.54% ['instance_create_fuzzer', 'instance_create_advanced_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/loader.h [] []
/src/vulkan-loader/loader/loader_common.h [] []
/src/vulkan-loader/loader/unknown_function_handling.c [] []
/src/instance_create_fuzzer.c ['instance_create_fuzzer'] ['instance_create_fuzzer']
/src/vulkan-loader/loader/wsi.c ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/loader.c ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/fuzz_header.h ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/loader_linux.c [] []
/src/vulkan-loader/loader/loader_json.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/log.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/terminator.c [] []
/src/vulkan-loader/loader/generated/vk_loader_extensions.c ['instance_create_fuzzer', 'instance_create_advanced_fuzzer'] []
/src/vulkan-loader/loader/settings.c ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/gpa_helper.c [] []
/src/vulkan-loader/loader/debug_utils.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
/src/json_load_fuzzer.c ['json_load_fuzzer'] ['json_load_fuzzer']
/src/settings_fuzzer.c ['settings_fuzzer'] ['settings_fuzzer']
/src/instance_enumerate_fuzzer.c ['instance_enumerate_fuzzer', 'instance_enumerate_fuzzer_split_input'] ['instance_enumerate_fuzzer', 'instance_enumerate_fuzzer_split_input']
/src/vulkan-loader/loader/phys_dev_ext.c [] []
/src/vulkan-loader/loader/vk_loader_platform.h ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/dev_ext_trampoline.c [] []
/src/vulkan-loader/loader/extension_manual.c [] []
/src/instance_create_advanced_fuzzer.c ['instance_create_advanced_fuzzer'] ['instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/loader_environment.c ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/generated/vk_object_types.h ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['instance_create_fuzzer', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/cJSON.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/allocation.c ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['json_load_fuzzer', 'settings_fuzzer', 'instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']
/src/vulkan-loader/loader/trampoline.c ['instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer'] ['instance_enumerate_fuzzer', 'instance_create_fuzzer', 'instance_enumerate_fuzzer_split_input', 'instance_create_advanced_fuzzer']

Directories in report

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