Fuzz introspector
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues
Report generation date: 2026-10-17

Project overview: libssh

High level conclusions

Reachability and coverage overview

Functions statically reachable by fuzzers
55.0%
910 / 1661
Cyclomatic complexity statically reachable by fuzzers
57.9%
7030 / 12030
Runtime code coverage of functions
64.0%
1061 / 1661

Warning: The number of runtime covered functions are larger than the number of reachable functions. This means that Fuzz Introspector found there are more functions covered at runtime than what is considered reachable based on the static analysis. This is a limitation in the analysis as anything covered at runtime is by definition reachable by the fuzzers.
This is likely due to a limitation in the static analysis. In this case, the count of functions covered at runtime is the true value, which means this is what should be considered "achieved" by the fuzzer.

Use the project functions table below to query all functions that were not covered at runtime.

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

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 110 25.5%
gold [1:9] 21 4.88%
yellow [10:29] 5 1.16%
greenyellow [30:49] 3 0.69%
lawngreen 50+ 291 67.6%
All colors 430 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
18 17 _ssh_log call site: 00017 ssh_vlog
13 237 ssh_buffer_unpack_va call site: 00237 _ssh_log
11 218 ssh_buffer_unpack_va call site: 00218 ssh_buffer_get_ssh_string
8 36 ssh_strict_fopen call site: 00036 _ssh_log
7 370 ssh_key_cmp call site: 00370 ssh_string_cmp
6 121 hmac_init call site: 00121 EVP_sha256
3 251 ssh_buffer_unpack_va call site: 00251 strlen
3 262 pki_pubkey_build_rsa call site: 00262 BN_clear_free
3 317 pki_pubkey_build_ed25519 call site: 00317 _ssh_log
2 12 ssh_strict_fopen call site: 00012 ssh_strerror
2 84 ssh_buffer_new call site: 00084 buffer_shift
2 313 pki_pubkey_build_ed25519 call site: 00313 _ssh_log

Runtime coverage analysis

Covered functions
101
Functions that are reachable but not covered
90
Reachable functions
177
Percentage of reachable functions covered
49.15%
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
tests/fuzz/ssh_known_hosts_fuzzer.c 1
tests/fuzz/nallocinc.c 7
src/knownhosts.c 7
src/misc.c 9
src/log.c 9
src/base64.c 4
src/buffer.c 19
src/libcrypto.c 4
src/match.c 3
src/pki.c 11
src/string.c 8
src/bignum.c 1
src/pki_crypto.c 6
src/init.c 2
src/threads/pthread.c 2
src/dh.c 1
src/socket.c 1
src/poll.c 1
src/threads.c 1
src/threads/libcrypto.c 1

Fuzzer: ssh_sshsig_fuzzer_nalloc

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 365 65.0%
gold [1:9] 48 8.55%
yellow [10:29] 16 2.85%
greenyellow [30:49] 15 2.67%
lawngreen 50+ 117 20.8%
All colors 561 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
251 299 sshsig_verify call site: 00299 ssh_pki_import_signature_blob
18 6 _ssh_log call site: 00006 ssh_vlog
18 173 ssh_pki_import_pubkey_blob call site: 00173 pki_import_cert_buffer
18 269 pki_key_clean call site: 00269 pki_import_pubkey_buffer
17 248 pki_import_pubkey_buffer call site: 00248 pki_pubkey_build_ed25519
6 126 ssh_buffer_unpack_va call site: 00126 _ssh_log
4 99 ssh_buffer_unpack_va call site: 00099 ssh_buffer_get_ssh_string
3 202 pki_pubkey_build_rsa call site: 00202 BN_clear_free
3 240 pki_import_pubkey_buffer call site: 00240 ssh_buffer_get_ssh_string
2 52 ssh_buffer_new call site: 00052 buffer_shift
2 91 ssh_buffer_unpack_va call site: 00091 ssh_buffer_get_u8
2 94 ssh_buffer_get_data call site: 00094 ssh_buffer_get_data

Runtime coverage analysis

Covered functions
68
Functions that are reachable but not covered
115
Reachable functions
165
Percentage of reachable functions covered
30.3%
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
tests/fuzz/ssh_sshsig_fuzzer.c 1
tests/fuzz/nallocinc.c 7
src/pki.c 20
src/log.c 9
src/base64.c 4
src/buffer.c 27
src/string.c 9
src/bignum.c 3
src/pki_crypto.c 11
src/md_crypto.c 8
src/pki_ed25519_common.c 1

Fuzzer: ssh_privkey_fuzzer_nalloc

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 495 95.0%
gold [1:9] 4 0.76%
yellow [10:29] 1 0.19%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 21 4.03%
All colors 521 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
431 58 realloc call site: 00058 pki_openssh_import_privkey_blob
19 500 pki_private_key_from_base64 call site: 00500 ssh_key_free
18 8 _ssh_log call site: 00008 ssh_vlog
14 27 ssh_pki_import_privkey_base64 call site: 00027 ssh_pki_openssh_privkey_import
6 49 calloc call site: 00049 ssh_buffer_allocate_size
3 491 pki_private_key_from_base64 call site: 00491 pem_get_password
2 46 nalloc_fail call site: 00046 fprintf
1 56 realloc call site: 00056 __errno_location
1 495 pki_private_key_from_base64 call site: 00495 PEM_read_bio_PrivateKey

Runtime coverage analysis

Covered functions
32
Functions that are reachable but not covered
141
Reachable functions
155
Percentage of reachable functions covered
9.03%
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
tests/fuzz/ssh_privkey_fuzzer.c 1
tests/fuzz/nallocinc.c 7
src/base64.c 6
src/pki.c 11
src/log.c 9
src/pki_container_openssh.c 4
src/buffer.c 19
src/string.c 7
src/bignum.c 1
src/pki_crypto.c 12
src/libcrypto.c 1
src/external/bcrypt_pbkdf.c 2
src/md_crypto.c 3
src/external/blowfish.c 6
src/wrapper.c 1

Fuzzer: ssh_pubkey_fuzzer_nalloc

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 423 65.2%
gold [1:9] 42 6.48%
yellow [10:29] 57 8.79%
greenyellow [30:49] 9 1.38%
lawngreen 50+ 117 18.0%
All colors 648 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
207 309 pki_import_cert_buffer call site: 00309 pki_openssh_import_privkey_blob
103 530 pki_private_key_from_base64 call site: 00530 ssh_pki_export_privkey_to_pubkey
23 242 pki_import_pubkey_buffer call site: 00242 ssh_buffer_get_ssh_string
18 27 _ssh_log call site: 00027 ssh_vlog
12 162 ssh_pki_openssh_import call site: 00162 ssh_pki_import_pubkey_blob
5 47 ssh_pki_import_pubkey_file call site: 00047 _ssh_log
4 119 ssh_buffer_unpack_va call site: 00119 ssh_buffer_get_ssh_string
4 148 ssh_buffer_unpack_va call site: 00148 _ssh_log
4 521 pki_private_key_from_base64 call site: 00521 pem_get_password
3 56 ssh_pki_import_pubkey_file call site: 00056 _ssh_log
3 193 ssh_key_type_from_name call site: 00193 pki_import_cert_buffer
3 224 pki_pubkey_build_rsa call site: 00224 BN_clear_free

Runtime coverage analysis

Covered functions
75
Functions that are reachable but not covered
122
Reachable functions
179
Percentage of reachable functions covered
31.84%
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
tests/fuzz/ssh_pubkey_fuzzer.c 1
src/misc.c 2
tests/fuzz/nallocinc.c 8
src/pki.c 15
src/log.c 9
src/pki_container_openssh.c 4
src/base64.c 4
src/buffer.c 19
src/string.c 8
src/bignum.c 1
src/pki_crypto.c 13
src/libcrypto.c 1
src/external/bcrypt_pbkdf.c 2
src/md_crypto.c 3
src/external/blowfish.c 6
src/wrapper.c 1

Fuzzer: ssh_client_config_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 371 33.3%
gold [1:9] 65 5.84%
yellow [10:29] 22 1.97%
greenyellow [30:49] 12 1.07%
lawngreen 50+ 642 57.7%
All colors 1112 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
43 777 ssh_path_expand_internal call site: 00777 get_connection_hash
21 481 ssh_options_set call site: 00481 ssh_path_expand_tilde
17 163 ssh_free call site: 00163 ssh_message_free
15 116 crypto_free call site: 00116 ssh_key_clean
13 1072 ssh_config_parse_line_internal call site: 01072 ssh_options_set
11 72 ssh_socket_close call site: 00072 ssh_poll_free
11 268 ssh_options_set call site: 00268 _ssh_set_error_invalid
10 766 ssh_path_expand_internal call site: 00766 _ssh_set_error
8 55 ssh_free call site: 00055 ssh_channel_do_free
8 339 ssh_options_set call site: 00339 _ssh_set_error_invalid
7 331 ssh_options_set call site: 00331 _ssh_set_error_invalid
7 456 ssh_config_parse_proxy_jump call site: 00456 ssh_options_set

Runtime coverage analysis

Covered functions
136
Functions that are reachable but not covered
220
Reachable functions
338
Percentage of reachable functions covered
34.91%
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
tests/fuzz/ssh_client_config_fuzzer.c 1
tests/fuzz/nallocinc.c 7
src/session.c 3
src/wrapper.c 4
src/socket.c 4
src/error.c 3
src/buffer.c 5
src/misc.c 30
src/agent.c 3
src/pki_context.c 3
src/channels.c 1
src/pcap.c 1
src/poll.c 5
src/log.c 12
src/pki.c 2
src/pki_crypto.c 1
src/string.c 4
src/dh_crypto.c 1
src/gzip.c 1
src/messages.c 1
src/auth.c 2
src/callbacks.c 1
src/options.c 5
src/config_parser.c 8
src/kex.c 6
src/token.c 7
src/config.c 20
src/match.c 8
src/md_crypto.c 4

Fuzzer: ssh_sftp_attr_fuzzer_nalloc

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 155 44.2%
gold [1:9] 4 1.14%
yellow [10:29] 12 3.42%
greenyellow [30:49] 9 2.57%
lawngreen 50+ 170 48.5%
All colors 350 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
20 86 _ssh_log call site: 00086 _ssh_log
17 163 ssh_free call site: 00163 ssh_message_free
13 72 ssh_socket_close call site: 00072 ssh_poll_free
13 306 ssh_buffer_unpack_va call site: 00306 _ssh_log
8 55 ssh_free call site: 00055 ssh_channel_do_free
8 123 ssh_string_len call site: 00123 ssh_string_burn
8 201 ssh_free call site: 00201 ssh_key_free
7 294 ssh_buffer_unpack_va call site: 00294 ssh_buffer_get_ssh_string
6 116 crypto_free call site: 00116 ssh_key_clean
6 183 ssh_free call site: 00183 _ssh_list_pop_head
6 321 sftp_parse_attr_3 call site: 00321 sftp_parse_longname
4 140 crypto_free call site: 00140 deflateEnd

Runtime coverage analysis

Covered functions
86
Functions that are reachable but not covered
58
Reachable functions
126
Percentage of reachable functions covered
53.97%
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
tests/fuzz/ssh_sftp_attr_fuzzer.c 2
tests/fuzz/nallocinc.c 7
src/session.c 3
src/wrapper.c 4
src/socket.c 4
src/error.c 2
src/buffer.c 16
src/misc.c 10
src/agent.c 3
src/pki_context.c 2
src/channels.c 1
src/pcap.c 1
src/poll.c 5
src/log.c 11
src/pki.c 2
src/pki_crypto.c 1
src/string.c 7
src/dh_crypto.c 1
src/gzip.c 1
src/messages.c 1
src/auth.c 2
src/callbacks.c 1
src/sftp_common.c 5
src/bignum.c 1
src/client.c 1
src/sftp.c 1

Fuzzer: ssh_bind_config_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 637 76.3%
gold [1:9] 23 2.75%
yellow [10:29] 17 2.03%
greenyellow [30:49] 12 1.43%
lawngreen 50+ 145 17.3%
All colors 834 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
465 66 realloc call site: 00066 ssh_pki_import_privkey_file
49 532 ssh_strerror call site: 00532 ssh_pki_import_privkey_base64
21 42 ssh_vlog call site: 00042 ssh_pki_openssh_privkey_import
20 680 ssh_bind_options_set call site: 00680 ssh_path_expand_tilde
10 587 ssh_bind_options_set call site: 00587 _ssh_log
6 6 calloc call site: 00006 nalloc_backtrace_exclude
6 703 ssh_bind_options_set call site: 00703 _ssh_set_error_invalid
4 34 ssh_log_stderr call site: 00034 ssh_pki_import_privkey_base64
4 747 ssh_strict_fopen call site: 00747 _ssh_log
4 756 ssh_strict_fopen call site: 00756 _ssh_log
3 15 LLVMFuzzerTestOneInput call site: 00015 ssh_bind_options_set
3 22 ssh_log_function call site: 00022 ssh_log_custom

Runtime coverage analysis

Covered functions
64
Functions that are reachable but not covered
258
Reachable functions
304
Percentage of reachable functions covered
15.13%
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
tests/fuzz/ssh_bind_config_fuzzer.c 1
tests/fuzz/nallocinc.c 7
src/bind.c 2
src/options.c 5
src/error.c 3
src/log.c 10
src/pki.c 14
src/pki_container_openssh.c 4
src/base64.c 4
src/buffer.c 19
src/string.c 7
src/bignum.c 1
src/pki_crypto.c 14
src/libcrypto.c 1
src/external/bcrypt_pbkdf.c 2
src/md_crypto.c 3
src/external/blowfish.c 6
src/wrapper.c 1
src/misc.c 6
src/kex.c 6
src/token.c 7
src/bind_config.c 6
src/config_parser.c 4

Fuzzer: ssh_config_diff_fuzzer_nalloc

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 395 30.5%
gold [1:9] 87 6.72%
yellow [10:29] 19 1.46%
greenyellow [30:49] 13 1.00%
lawngreen 50+ 779 60.2%
All colors 1293 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
56 1232 get_all_openssh_values call site: 01232 assert_libssh_openssh_value_equal
21 485 ssh_options_set call site: 00485 ssh_path_expand_tilde
15 120 crypto_free call site: 00120 ssh_key_clean
14 167 ssh_free call site: 00167 ssh_message_free
13 1072 ssh_config_parse_line_internal call site: 01072 ssh_options_set
11 76 ssh_socket_close call site: 00076 ssh_poll_free
11 272 ssh_options_set call site: 00272 _ssh_set_error_invalid
8 59 ssh_free call site: 00059 ssh_channel_do_free
8 343 ssh_options_set call site: 00343 _ssh_set_error_invalid
8 1163 get_all_libssh_values call site: 01163 _ssh_set_error_invalid
8 1223 get_all_openssh_values call site: 01223 config_value_list_append
7 335 ssh_options_set call site: 00335 _ssh_set_error_invalid

Runtime coverage analysis

Covered functions
151
Functions that are reachable but not covered
219
Reachable functions
357
Percentage of reachable functions covered
38.66%
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
tests/fuzz/ssh_config_diff_fuzzer.c 11
src/session.c 3
src/wrapper.c 4
src/socket.c 4
src/error.c 3
src/buffer.c 5
src/misc.c 33
src/agent.c 3
src/pki_context.c 3
src/channels.c 1
src/pcap.c 1
src/poll.c 5
src/log.c 12
src/pki.c 2
src/pki_crypto.c 1
src/string.c 4
src/dh_crypto.c 1
src/gzip.c 1
src/messages.c 1
src/auth.c 2
src/callbacks.c 1
src/options.c 9
src/config_parser.c 8
src/kex.c 8
src/token.c 7
src/config.c 21
src/match.c 8
src/md_crypto.c 4

Fuzzer: ssh_client_fuzzer_nalloc

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 3049 68.6%
gold [1:9] 62 1.39%
yellow [10:29] 133 2.99%
greenyellow [30:49] 34 0.76%
lawngreen 50+ 1164 26.2%
All colors 4442 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
400 3383 ssh_pki_import_pubkey_blob call site: 03383 ssh_userauth_try_publickey
306 849 ssh_lowercase call site: 00849 ssh_config_parse
248 3807 ssh_key_size_allowed_rsa call site: 03807 ssh_userauth_agent_publickey
245 4077 ssh_signature_free call site: 04077 ssh_event_add_connector
162 685 ssh_strict_fopen call site: 00685 ssh_config_parse
115 1681 pki_import_cert_buffer call site: 01681 ssh_session_update_known_hosts
109 442 ssh_options_set call site: 00442 ssh_options_set
109 1932 ssh_string_fill call site: 01932 ssh_userauth_publickey_auto
85 1275 ssh_connect call site: 01275 ssh_socket_connect_proxyjump
77 3285 ssh_client_hybrid_mlkem_init call site: 03285 atomicio
76 4349 ssh_disconnect call site: 04349 select_loop
52 2198 packet_send2 call site: 02198 ssh_pcap_context_write

Runtime coverage analysis

Covered functions
599
Functions that are reachable but not covered
473
Reachable functions
998
Percentage of reachable functions covered
52.61%
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
tests/fuzz/ssh_client_fuzzer.c 2
tests/fuzz/nallocinc.c 11
src/session.c 9
src/wrapper.c 10
src/socket.c 24
src/error.c 4
src/buffer.c 31
src/misc.c 41
src/agent.c 11
src/pki_context.c 3
src/channels.c 31
src/pcap.c 5
src/poll.c 26
src/log.c 13
src/pki.c 43
src/pki_crypto.c 22
src/string.c 12
src/dh_crypto.c 6
src/gzip.c 4
src/messages.c 1
src/auth.c 15
src/callbacks.c 6
src/options.c 8
src/config_parser.c 8
src/kex.c 19
src/token.c 7
src/config.c 21
src/client.c 7
src/init.c 1
src/threads/pthread.c 2
src/md_crypto.c 20
src/match.c 9
src/threads.c 1
src/connect.c 4
src/knownhosts.c 18
src/dh.c 4
src/base64.c 6
src/libcrypto.c 6
src/bignum.c 3
include/libssh/session.h 1
src/packet.c 10
src/getrandom_crypto.c 1
src/server.c 1
src/packet_crypt.c 1
src/kdf.c 5
src/dh-gex.c 1
src/ecdh_crypto.c 4
src/curve25519.c 1
src/curve25519_crypto.c 1
src/sntrup761.c 3
src/external/sntrup761.c 24
src/hybrid_mlkem.c 1
src/mlkem_native.c 1
src/mlkem.c 1
src/external/libcrux_mlkem768_sha3.c 256
src/pki_container_openssh.c 5
src/external/bcrypt_pbkdf.c 2
src/external/blowfish.c 6
src/pki_ed25519_common.c 1
src/connector.c 18

Fuzzer: ssh_server_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 1754 56.5%
gold [1:9] 17 0.54%
yellow [10:29] 23 0.74%
greenyellow [30:49] 32 1.03%
lawngreen 50+ 1277 41.1%
All colors 3103 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
288 1399 ssh_list_prepend call site: 01399 ssh_options_set
180 1691 ssh_strict_fopen call site: 01691 ssh_send_kex
168 500 sha512_final call site: 00500 pki_openssh_import_privkey_blob
104 1294 ssh_packet_send call site: 01294 ssh_send_rekex
47 3028 libcrux_sha3_generic_keccak_portable_keccak1_ad call site: 03028 ssh_packet_send
38 1154 ssh_buffer_pack_va call site: 01154 _ssh_buffer_pack
31 849 ssh_bind_options_set call site: 00849 ssh_bind_set_algo
29 805 ssh_find_all_matching call site: 00805 ssh_prefix_default_algos
28 463 ssh_pki_import_pubkey_blob call site: 00463 pki_private_key_decrypt
28 1051 pki_key_dup call site: 01051 ssh_key_free
24 1896 packet_send2 call site: 01896 compress_buffer
23 241 ssh_pki_import_privkey_base64 call site: 00241 ssh_pki_openssh_privkey_import

Runtime coverage analysis

Covered functions
733
Functions that are reachable but not covered
328
Reachable functions
808
Percentage of reachable functions covered
59.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
tests/fuzz/ssh_server_fuzzer.c 2
tests/fuzz/nallocinc.c 11
src/bind.c 4
src/session.c 7
src/wrapper.c 10
src/socket.c 16
src/error.c 3
src/buffer.c 31
src/misc.c 39
src/agent.c 3
src/pki_context.c 3
src/channels.c 1
src/pcap.c 5
src/poll.c 21
src/log.c 12
src/pki.c 22
src/pki_crypto.c 18
src/string.c 11
src/dh_crypto.c 6
src/gzip.c 4
src/messages.c 1
src/auth.c 2
src/callbacks.c 2
src/options.c 11
src/pki_container_openssh.c 4
src/base64.c 4
src/bignum.c 3
src/libcrypto.c 7
src/external/bcrypt_pbkdf.c 2
src/md_crypto.c 20
src/external/blowfish.c 6
src/kex.c 19
src/token.c 7
src/server.c 4
src/client.c 3
src/getrandom_crypto.c 1
src/packet.c 10
src/knownhosts.c 11
src/config_parser.c 1
src/config.c 1
src/match.c 3
src/packet_crypt.c 1
src/dh.c 3
src/kdf.c 5
src/dh-gex.c 1
src/ecdh_crypto.c 4
src/curve25519.c 1
src/curve25519_crypto.c 1
src/sntrup761.c 3
src/external/sntrup761.c 24
src/hybrid_mlkem.c 1
src/mlkem_native.c 1
src/mlkem.c 1
src/external/libcrux_mlkem768_sha3.c 256

Fuzzer: ssh_scp_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 3157 66.7%
gold [1:9] 28 0.59%
yellow [10:29] 3 0.06%
greenyellow [30:49] 1 0.02%
lawngreen 50+ 1542 32.5%
All colors 4731 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
453 3135 ssh_mutex_unlock call site: 03135 ssh_options_parse_config
193 4054 ssh_userauth_get_response call site: 04054 ssh_userauth_agent_publickey
142 3692 ssh_connect call site: 03692 ssh_userauth_publickey_auto
109 1009 ssh_options_set call site: 01009 ssh_options_set
105 4426 ssh_channel_send_eof call site: 04426 ssh_event_add_connector
84 547 pki_import_privkey_buffer call site: 00547 pki_buffer_unpack_sk_priv_data
84 1761 hmac_final call site: 01761 ssh_pki_import_pubkey_base64
83 3596 ssh_connect call site: 03596 ssh_socket_connect_proxyjump
67 465 pki_private_key_decrypt call site: 00465 _ssh_buffer_unpack
62 2396 ssh_curve25519_init call site: 02396 ssh_packet_send
61 1263 ssh_string_copy call site: 01263 ssh_key_free
53 4667 test_scp_with_cipher call site: 04667 ssh_scp_push_file

Runtime coverage analysis

Covered functions
819
Functions that are reachable but not covered
476
Reachable functions
1044
Percentage of reachable functions covered
54.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
tests/fuzz/ssh_scp_fuzzer.c 3
tests/fuzz/nallocinc.c 11
tests/fuzz/ssh_server_mock.c 3
src/bind.c 4
src/session.c 9
src/wrapper.c 10
src/socket.c 24
src/error.c 4
src/buffer.c 31
src/misc.c 44
src/agent.c 11
src/pki_context.c 3
src/channels.c 32
src/pcap.c 5
src/poll.c 26
src/log.c 12
src/pki.c 43
src/pki_crypto.c 22
src/string.c 12
src/dh_crypto.c 6
src/gzip.c 4
src/messages.c 1
src/auth.c 15
src/callbacks.c 6
src/options.c 12
src/pki_container_openssh.c 5
src/base64.c 6
src/bignum.c 3
src/libcrypto.c 7
src/external/bcrypt_pbkdf.c 2
src/md_crypto.c 20
src/external/blowfish.c 6
src/kex.c 19
src/token.c 7
src/server.c 4
src/config_parser.c 8
src/config.c 21
src/client.c 8
src/getrandom_crypto.c 1
src/packet.c 10
src/knownhosts.c 18
src/match.c 9
src/packet_crypt.c 1
src/dh.c 4
src/kdf.c 5
src/dh-gex.c 1
src/ecdh_crypto.c 4
src/curve25519.c 1
src/curve25519_crypto.c 1
src/sntrup761.c 3
src/external/sntrup761.c 24
src/hybrid_mlkem.c 1
src/mlkem_native.c 1
src/mlkem.c 1
src/external/libcrux_mlkem768_sha3.c 256
src/init.c 1
src/threads/pthread.c 2
src/threads.c 1
src/connect.c 4
include/libssh/session.h 1
src/pki_ed25519_common.c 1
src/connector.c 18
src/scp.c 22

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
ssh_packet_client_hybrid_mlkem_reply /src/libssh/src/hybrid_mlkem.c 4 ['N/A', 'char', 'N/A', 'N/A'] 28 0 394 40 17 841 0 3870 408
ssh_packet_userauth_request /src/libssh/src/messages.c 4 ['N/A', 'char', 'N/A', 'N/A'] 34 0 898 187 54 743 0 4066 299
ssh_packet_socket_callback /src/libssh/src/packet.c 3 ['N/A', 'size_t', 'N/A'] 26 0 989 135 48 698 0 3647 198
sftp_init /src/libssh/src/sftp.c 1 ['N/A'] 29 0 531 88 27 749 0 3876 177
ssh_server_connection_callback /src/libssh/src/server.c 1 ['N/A'] 28 0 491 85 25 708 0 3653 170
ssh_channel_request_pty /src/libssh/src/channels.c 1 ['N/A'] 30 0 15 3 2 723 0 3758 163
process_readdir /src/libssh/src/sftpserver.c 1 ['N/A'] 26 0 236 34 13 732 0 3770 122
ssh_packet_server_sntrup761x25519_init /src/libssh/src/sntrup761.c 4 ['N/A', 'char', 'N/A', 'N/A'] 27 0 398 64 24 743 0 3851 121
ssh_packet_server_dhgex_request /src/libssh/src/dh-gex.c 4 ['N/A', 'char', 'N/A', 'N/A'] 27 0 284 51 18 692 0 3536 97
ssh_pki_export_privkey_file /src/libssh/src/pki.c 5 ['N/A', 'N/A', 'N/A', 'N/A', 'N/A'] 14 0 27 3 2 126 0 584 91

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

Functions statically reachable by fuzzers
72.0%
1197 / 1661
Cyclomatic complexity statically reachable by fuzzers
73.0%
8818 / 12030

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.

tests/fuzz/ssh_known_hosts_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=['_ssh_log', 'ssh_buffer_unpack_va', 'ssh_strict_fopen', 'ssh_key_cmp', 'hmac_init', 'pki_pubkey_build_rsa', 'pki_pubkey_build_ed25519']

tests/fuzz/ssh_sshsig_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=['sshsig_verify', '_ssh_log', 'ssh_pki_import_pubkey_blob', 'pki_key_clean', 'pki_import_pubkey_buffer', 'ssh_buffer_unpack_va', 'pki_pubkey_build_rsa', 'ssh_buffer_new']

tests/fuzz/ssh_privkey_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=['realloc', 'pki_private_key_from_base64', '_ssh_log', 'ssh_pki_import_privkey_base64', 'calloc', 'nalloc_fail']

tests/fuzz/ssh_pubkey_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=['pki_import_cert_buffer', 'pki_private_key_from_base64', 'pki_import_pubkey_buffer', '_ssh_log', 'ssh_pki_openssh_import', 'ssh_pki_import_pubkey_file', 'ssh_buffer_unpack_va']

tests/fuzz/ssh_client_config_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=['ssh_path_expand_internal', 'ssh_options_set', 'ssh_free', 'crypto_free', 'ssh_config_parse_line_internal', 'ssh_socket_close']

tests/fuzz/ssh_sftp_attr_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=['_ssh_log', 'ssh_free', 'ssh_socket_close', 'ssh_buffer_unpack_va', 'ssh_string_len', 'crypto_free']

tests/fuzz/ssh_bind_config_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=['realloc', 'ssh_strerror', 'ssh_vlog', 'ssh_bind_options_set', 'calloc', 'ssh_log_stderr', 'ssh_strict_fopen']

tests/fuzz/ssh_config_diff_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=['get_all_openssh_values', 'ssh_options_set', 'crypto_free', 'ssh_free', 'ssh_config_parse_line_internal', 'ssh_socket_close', 'get_all_libssh_values']

tests/fuzz/ssh_client_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=['ssh_pki_import_pubkey_blob', 'ssh_lowercase', 'ssh_key_size_allowed_rsa', 'ssh_signature_free', 'ssh_strict_fopen', 'pki_import_cert_buffer', 'ssh_options_set', 'ssh_string_fill', 'ssh_connect', 'ssh_client_hybrid_mlkem_init']

tests/fuzz/ssh_server_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=['ssh_list_prepend', 'ssh_strict_fopen', 'sha512_final', 'ssh_packet_send', 'libcrux_sha3_generic_keccak_portable_keccak1_ad', 'ssh_buffer_pack_va', 'ssh_bind_options_set', 'ssh_find_all_matching', 'ssh_pki_import_pubkey_blob', 'pki_key_dup']

tests/fuzz/ssh_scp_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=['ssh_mutex_unlock', 'ssh_userauth_get_response', 'ssh_connect', 'ssh_options_set', 'ssh_channel_send_eof', 'pki_import_privkey_buffer', 'hmac_final', 'pki_private_key_decrypt', 'ssh_curve25519_init']

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
ssh_dh_init 36 19 52.77% ['ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_privkey_fuzzer_nalloc', 'ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc']
hmac_init 37 20 54.05% ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_key_cmp 50 17 34.0% ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
pki_pubkey_build_rsa 41 21 51.21% ['ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_privkey_fuzzer_nalloc', 'ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc']
pki_private_key_from_base64 77 40 51.94% ['ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_privkey_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc']
ssh_config_make_absolute 41 22 53.65% ['ssh_bind_config_fuzzer', 'ssh_scp_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer']
ssh_socket_close 31 15 48.38% ['ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc']
ssh_bind_options_set 361 187 51.80% ['ssh_bind_config_fuzzer', 'ssh_scp_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_config_fuzzer']
ssh_options_get_int 77 21 27.27% ['ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer']
ssh_options_get 179 36 20.11% ['ssh_config_diff_fuzzer_nalloc']
get_all_openssh_values 114 16 14.03% ['ssh_config_diff_fuzzer_nalloc']
ssh_channel_free 38 14 36.84% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
ssh_connect 117 57 48.71% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
ssh_curve25519_init 50 25 50.0% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_packet_client_dhgex_reply 49 22 44.89% ['ssh_client_fuzzer_nalloc']
ssh_packet_client_ecdh_reply 45 18 40.0% ['ssh_client_fuzzer_nalloc']
ssh_ecdh_generate 53 26 49.05% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
libcrux_sha3_generic_keccak_portable_keccak1_96 31 15 48.38% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_packet_client_hybrid_mlkem_reply 148 71 47.97% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
sshkdf_derive_key 73 25 34.24% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_mac_ctx_init 35 19 54.28% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_client_select_hostkeys 70 27 38.57% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_send_kex 89 48 53.93% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_hashbufout_add_cookie 31 17 54.83% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
revert_kex_callbacks 45 4 8.888% ['ssh_client_fuzzer_nalloc']
ssh_known_hosts_get_algorithms_names 71 25 35.21% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_key_signature_to_char 33 16 48.48% ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_sshsig_fuzzer_nalloc']
pki_key_to_blob 335 126 37.61% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_packet_client_sntrup761x25519_reply 64 32 50.0% ['ssh_client_fuzzer_nalloc']
ssh_bind_accept_fd 127 46 36.22% ['ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_channel_new 44 22 50.0% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
channel_default_bufferize 45 18 40.0% ['ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_retrieve_dhgroup 51 15 29.41% ['ssh_server_fuzzer']
ssh_message_queue 35 18 51.42% ['ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_execute_server_request 263 102 38.78% ['ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_msg_userauth_build_digest 53 28 52.83% ['ssh_server_fuzzer']
pki_key_dup_common_init 43 15 34.88% ['ssh_scp_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_server_fuzzer']
ssh_pki_import_privkey_file 61 32 52.45% ['ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer']
ssh_pki_export_signature_blob 54 26 48.14% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer', 'ssh_server_fuzzer']
pki_key_dup 220 89 40.45% ['ssh_scp_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_server_fuzzer']
ssh_get_key_params 44 23 52.27% ['ssh_scp_fuzzer', 'ssh_server_fuzzer']
ssh_auth_reply_default 44 13 29.54% ['ssh_server_fuzzer']
ssh_userauth_get_response 42 13 30.95% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
grow_window 42 19 45.23% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
channel_write_common 121 51 42.14% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
ssh_service_request 42 23 54.76% ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
evp_cipher_init 42 16 38.09% ['ssh_scp_fuzzer']
ssh_quote_file_name 92 34 36.95% ['ssh_scp_fuzzer']
pki_import_privkey_buffer 165 26 15.75% ['ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_privkey_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc']
pki_private_key_decrypt 110 16 14.54% ['ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer', 'ssh_privkey_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc']
ssh_scp_new 38 17 44.73% ['ssh_scp_fuzzer']
ssh_scp_read_string 32 17 53.12% ['ssh_scp_fuzzer']
ssh_scp_pull_request 97 21 21.64% ['ssh_scp_fuzzer']
ssh_scp_read 53 10 18.86% ['ssh_scp_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/libssh/src/getrandom_crypto.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/pki.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/md_crypto.c ['ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/sftp.c ['ssh_sftp_attr_fuzzer_nalloc'] ['ssh_sftp_attr_fuzzer_nalloc']
/src/libssh/src/config.c ['ssh_client_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc']
/src/libssh/src/log.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/token.c ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/server.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/error.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/gzip.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/base64.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_scp_fuzzer']
/src/libssh/src/bind_config.c ['ssh_bind_config_fuzzer'] ['ssh_bind_config_fuzzer']
/src/libssh/src/packet_crypt.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/packet.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/buffer.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/external/libcrux_mlkem768_sha3.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/tests/fuzz/ssh_sftp_attr_fuzzer.c ['ssh_sftp_attr_fuzzer_nalloc'] ['ssh_sftp_attr_fuzzer_nalloc']
/src/libssh/src/sntrup761.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer']
/src/libssh/tests/fuzz/ssh_privkey_fuzzer.c ['ssh_privkey_fuzzer_nalloc'] ['ssh_privkey_fuzzer_nalloc']
/src/libssh/src/bignum.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer']
/src/libssh/src/pki_ed25519_common.c ['ssh_sshsig_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer'] ['ssh_scp_fuzzer']
/src/libssh/src/session.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/channels.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/messages.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/tests/fuzz/ssh_sshsig_fuzzer.c ['ssh_sshsig_fuzzer_nalloc'] ['ssh_sshsig_fuzzer_nalloc']
/src/libssh/src/threads/pthread.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
/src/libssh/src/misc.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/sftp_common.c ['ssh_sftp_attr_fuzzer_nalloc'] ['ssh_sftp_attr_fuzzer_nalloc']
/src/libssh/src/pki_container_openssh.c ['ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_pubkey_fuzzer_nalloc', 'ssh_scp_fuzzer']
/src/libssh/src/scp.c ['ssh_scp_fuzzer'] ['ssh_scp_fuzzer']
/src/libssh/src/sftpserver.c [] []
/src/libssh/src/dh-gex.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer']
/src/libssh/src/dh.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/tests/fuzz/ssh_bind_config_fuzzer.c ['ssh_bind_config_fuzzer'] ['ssh_bind_config_fuzzer']
/src/libssh/src/poll.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/tests/fuzz/ssh_server_mock.c ['ssh_scp_fuzzer'] ['ssh_scp_fuzzer']
/src/libssh/src/threads/libcrypto.c ['ssh_known_hosts_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc']
/src/libssh/tests/fuzz/ssh_server_fuzzer.c ['ssh_server_fuzzer'] ['ssh_server_fuzzer']
/src/libssh/tests/fuzz/ssh_client_config_fuzzer.c ['ssh_client_config_fuzzer'] ['ssh_client_config_fuzzer']
/src/libssh/src/hybrid_mlkem.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/init.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
/src/libssh/src/config_parser.c ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
/src/libssh/src/kdf.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/crypto_common.c [] []
/src/libssh/src/socket.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/knownhosts.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
/src/libssh/src/client.c ['ssh_sftp_attr_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_sftp_attr_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/auth.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/tests/fuzz/ssh_client_fuzzer.c ['ssh_client_fuzzer_nalloc'] ['ssh_client_fuzzer_nalloc']
/src/libssh/src/options.c ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/pki_crypto.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/tests/fuzz/ssh_pubkey_fuzzer.c ['ssh_pubkey_fuzzer_nalloc'] ['ssh_pubkey_fuzzer_nalloc']
/src/libssh/src/external/sntrup761.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer']
/src/libssh/tests/fuzz/ssh_scp_fuzzer.c ['ssh_scp_fuzzer'] ['ssh_scp_fuzzer']
/src/libssh/src/pcap.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] []
/src/libssh/src/wrapper.c ['ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/agent.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/bind.c ['ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/match.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/callbacks.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/kex.c ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/curve25519_crypto.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/external/blowfish.c ['ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] []
/src/libssh/tests/fuzz/ssh_config_diff_fuzzer.c ['ssh_config_diff_fuzzer_nalloc'] ['ssh_config_diff_fuzzer_nalloc']
/src/libssh/src/connect.c ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer'] []
/src/libssh/src/external/bcrypt_pbkdf.c ['ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] []
/src/libssh/src/connector.c ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer'] []
/src/libssh/src/ecdh_crypto.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer']
/src/libssh/tests/fuzz/nallocinc.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/curve25519.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/ttyopts.c [] []
/src/libssh/tests/fuzz/ssh_known_hosts_fuzzer.c ['ssh_known_hosts_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc']
/src/libssh/src/mlkem_native.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/threads.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer']
/src/libssh/src/dh_crypto.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/string.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/include/libssh/session.h ['ssh_client_fuzzer_nalloc', 'ssh_scp_fuzzer'] []
/src/libssh/src/libcrypto.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/packet_cb.c [] []
/src/libssh/src/pki_context.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_config_diff_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/mlkem.c ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer'] ['ssh_client_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_scp_fuzzer']
/src/libssh/src/ecdh.c [] []

Directories in report

Directory
/src/libssh/src/external/
/src/libssh/tests/fuzz/
/src/libssh/src/threads/
/src/libssh/src/
/src/libssh/include/libssh/

Metadata section

This sections shows the raw data that is used to produce this report. This is mainly used for further processing and developer debugging.

Fuzzer Calltree file Program data file Coverage file
ssh_known_hosts_fuzzer_nalloc fuzzerLogFile-0-9asCHIE7Ys.data fuzzerLogFile-0-9asCHIE7Ys.data.yaml ssh_known_hosts_fuzzer_nalloc.covreport
ssh_sshsig_fuzzer_nalloc fuzzerLogFile-0-A3Ri3tM1wx.data fuzzerLogFile-0-A3Ri3tM1wx.data.yaml ssh_sshsig_fuzzer_nalloc.covreport
ssh_privkey_fuzzer_nalloc fuzzerLogFile-0-tMgbBdEANx.data fuzzerLogFile-0-tMgbBdEANx.data.yaml ssh_privkey_fuzzer_nalloc.covreport
ssh_pubkey_fuzzer_nalloc fuzzerLogFile-0-ZVUdaOj58t.data fuzzerLogFile-0-ZVUdaOj58t.data.yaml ssh_pubkey_fuzzer_nalloc.covreport
ssh_client_config_fuzzer fuzzerLogFile-0-epjv2KcfvK.data fuzzerLogFile-0-epjv2KcfvK.data.yaml ssh_client_config_fuzzer.covreport
ssh_sftp_attr_fuzzer_nalloc fuzzerLogFile-0-7ZSadY31wk.data fuzzerLogFile-0-7ZSadY31wk.data.yaml ssh_sftp_attr_fuzzer_nalloc.covreport
ssh_bind_config_fuzzer fuzzerLogFile-0-pgubYNqsnM.data fuzzerLogFile-0-pgubYNqsnM.data.yaml ssh_bind_config_fuzzer.covreport
ssh_config_diff_fuzzer_nalloc fuzzerLogFile-0-Vzxx3vYKyU.data fuzzerLogFile-0-Vzxx3vYKyU.data.yaml ssh_config_diff_fuzzer_nalloc.covreport
ssh_client_fuzzer_nalloc fuzzerLogFile-0-ntivBfQaBp.data fuzzerLogFile-0-ntivBfQaBp.data.yaml ssh_client_fuzzer_nalloc.covreport
ssh_server_fuzzer fuzzerLogFile-0-s3NHYzpNK8.data fuzzerLogFile-0-s3NHYzpNK8.data.yaml ssh_server_fuzzer.covreport
ssh_scp_fuzzer fuzzerLogFile-0-E8TjjE8ZIB.data fuzzerLogFile-0-E8TjjE8ZIB.data.yaml ssh_scp_fuzzer.covreport