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: 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 109 25.4%
gold [1:9] 17 3.97%
yellow [10:29] 6 1.40%
greenyellow [30:49] 4 0.93%
lawngreen 50+ 292 68.2%
All colors 428 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 235 ssh_buffer_unpack_va call site: 00235 _ssh_log
11 216 ssh_buffer_unpack_va call site: 00216 ssh_buffer_get_ssh_string
8 36 ssh_strict_fopen call site: 00036 _ssh_log
7 369 ssh_key_cmp call site: 00369 ssh_string_cmp
6 120 hmac_init call site: 00120 EVP_sha256
4 260 pki_pubkey_build_rsa call site: 00260 BN_clear_free
3 249 ssh_buffer_unpack_va call site: 00249 strlen
3 316 pki_pubkey_build_ed25519 call site: 00316 _ssh_log
2 12 ssh_strict_fopen call site: 00012 ssh_strerror
2 83 ssh_buffer_new call site: 00083 buffer_shift
2 312 pki_pubkey_build_ed25519 call site: 00312 _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_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 493 94.9%
gold [1:9] 4 0.77%
yellow [10:29] 1 0.19%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 21 4.04%
All colors 519 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
429 58 realloc call site: 00058 ssh_pki_import_pubkey_blob
19 498 pki_private_key_from_base64 call site: 00498 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 489 pki_private_key_from_base64 call site: 00489 pem_get_password
2 46 nalloc_fail call site: 00046 fprintf
1 56 realloc call site: 00056 __errno_location
1 493 pki_private_key_from_base64 call site: 00493 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_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 373 66.8%
gold [1:9] 31 5.55%
yellow [10:29] 29 5.19%
greenyellow [30:49] 4 0.71%
lawngreen 50+ 121 21.6%
All colors 558 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
247 300 sshsig_verify call site: 00300 ssh_pki_import_signature_blob
23 221 pki_import_pubkey_buffer call site: 00221 pki_pubkey_build_ecdsa
18 7 _ssh_log call site: 00007 ssh_vlog
18 173 ssh_pki_import_pubkey_blob call site: 00173 pki_import_cert_buffer
18 270 pki_key_clean call site: 00270 pki_import_pubkey_buffer
6 126 ssh_buffer_unpack_va call site: 00126 _ssh_log
4 100 ssh_buffer_unpack_va call site: 00100 ssh_buffer_get_ssh_string
4 202 pki_pubkey_build_rsa call site: 00202 BN_clear_free
4 262 pki_import_pubkey_buffer call site: 00262 _ssh_log
3 257 pki_pubkey_build_ed25519 call site: 00257 _ssh_log
2 53 ssh_buffer_new call site: 00053 buffer_shift
2 74 base64_to_bin call site: 00074 ssh_buffer_add_data

Runtime coverage analysis

Covered functions
68
Functions that are reachable but not covered
118
Reachable functions
168
Percentage of reachable functions covered
29.76%
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 21
src/log.c 9
src/base64.c 4
src/buffer.c 27
src/string.c 9
src/bignum.c 4
src/pki_crypto.c 11
src/md_crypto.c 8
src/pki_ed25519_common.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 321 35.0%
gold [1:9] 89 9.72%
yellow [10:29] 40 4.37%
greenyellow [30:49] 56 6.12%
lawngreen 50+ 409 44.6%
All colors 915 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 92 _ssh_log call site: 00092 _ssh_log
16 310 ssh_options_set call site: 00310 _ssh_set_error_invalid
15 122 crypto_free call site: 00122 ssh_key_clean
15 458 ssh_options_set call site: 00458 ssh_path_expand_tilde
14 169 ssh_free call site: 00169 ssh_message_free
14 874 ssh_config_parse_line_internal call site: 00874 ssh_options_set
13 641 ssh_config_parse_line_internal call site: 00641 ssh_match_localnetwork
11 78 ssh_socket_close call site: 00078 ssh_poll_free
11 629 match_cidr_address_list call site: 00629 _ssh_log
8 61 ssh_free call site: 00061 ssh_channel_do_free
7 444 ssh_options_set call site: 00444 _ssh_set_error_invalid
7 608 get_address_family call site: 00608 _ssh_log

Runtime coverage analysis

Covered functions
122
Functions that are reachable but not covered
219
Reachable functions
323
Percentage of reachable functions covered
32.2%
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 26
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 3
src/config_parser.c 6
src/kex.c 6
src/token.c 7
src/config.c 14
src/match.c 8
src/md_crypto.c 4

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 434 66.9%
gold [1:9] 47 7.25%
yellow [10:29] 18 2.77%
greenyellow [30:49] 27 4.16%
lawngreen 50+ 122 18.8%
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
205 310 pki_import_cert_buffer call site: 00310 pki_openssh_import_privkey_blob
104 529 pki_private_key_from_base64 call site: 00529 ssh_pki_export_privkey_to_pubkey
23 243 pki_import_pubkey_buffer call site: 00243 pki_pubkey_build_ecdsa
18 27 _ssh_log call site: 00027 ssh_vlog
12 162 ssh_pki_openssh_import call site: 00162 ssh_pki_import_pubkey_blob
9 219 pki_pubkey_build_rsa call site: 00219 ssh_make_string_bn
6 47 ssh_pki_import_pubkey_file call site: 00047 _ssh_log
4 120 ssh_buffer_unpack_va call site: 00120 ssh_buffer_get_ssh_string
4 148 ssh_buffer_unpack_va call site: 00148 _ssh_log
4 520 pki_private_key_from_base64 call site: 00520 pem_get_password
3 57 ssh_pki_import_pubkey_file call site: 00057 _ssh_log
3 135 ssh_string_len call site: 00135 ssh_string_burn

Runtime coverage analysis

Covered functions
74
Functions that are reachable but not covered
123
Reachable functions
179
Percentage of reachable functions covered
31.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
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_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 137 39.7%
gold [1:9] 0 0.0%
yellow [10:29] 8 2.31%
greenyellow [30:49] 7 2.02%
lawngreen 50+ 193 55.9%
All colors 345 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 91 _ssh_log call site: 00091 _ssh_log
14 168 ssh_free call site: 00168 ssh_message_free
13 77 ssh_socket_close call site: 00077 ssh_poll_free
13 301 ssh_buffer_unpack_va call site: 00301 _ssh_log
8 60 ssh_free call site: 00060 ssh_channel_do_free
8 128 ssh_string_len call site: 00128 ssh_string_burn
7 289 ssh_buffer_unpack_va call site: 00289 ssh_buffer_get_ssh_string
6 121 crypto_free call site: 00121 ssh_key_clean
6 316 sftp_parse_attr_3 call site: 00316 sftp_parse_longname
4 145 crypto_free call site: 00145 deflateEnd
4 281 ssh_buffer_unpack_va call site: 00281 ssh_buffer_get_u8
2 22 ssh_buffer_new call site: 00022 buffer_shift

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 619 74.6%
gold [1:9] 32 3.86%
yellow [10:29] 17 2.05%
greenyellow [30:49] 10 1.20%
lawngreen 50+ 151 18.2%
All colors 829 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
429 120 realloc call site: 00120 ssh_pki_import_pubkey_blob
35 601 ssh_pki_import_privkey_file call site: 00601 ssh_bind_key_size_allowed
20 97 ssh_pki_import_privkey_base64 call site: 00097 ssh_pki_openssh_privkey_import
20 730 ssh_bind_options_set call site: 00730 ssh_path_expand_tilde
19 560 pki_private_key_from_base64 call site: 00560 ssh_key_free
10 637 ssh_bind_options_set call site: 00637 _ssh_log
9 586 ssh_pki_import_privkey_file call site: 00586 _ssh_log
6 7 calloc call site: 00007 nalloc_backtrace_exclude
6 753 ssh_bind_options_set call site: 00753 _ssh_set_error_invalid
4 75 ssh_strict_fopen call site: 00075 _ssh_log
3 21 ssh_log_function call site: 00021 ssh_log_custom
3 84 ssh_strict_fopen call site: 00084 _ssh_log

Runtime coverage analysis

Covered functions
65
Functions that are reachable but not covered
239
Reachable functions
286
Percentage of reachable functions covered
16.43%
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/bind_config.c 6
src/log.c 10
src/error.c 3
src/config_parser.c 3
src/misc.c 5
src/options.c 5
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/kex.c 6
src/token.c 7

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 2137 71.0%
gold [1:9] 25 0.83%
yellow [10:29] 24 0.79%
greenyellow [30:49] 15 0.49%
lawngreen 50+ 805 26.7%
All colors 3006 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
522 2367 libcrux_ml_kem_vector_portable_vector_type_zero call site: 02367 libcrux_ml_kem_ind_cpa_generate_keypair_unpacked_1c
215 1371 ssh_list_prepend call site: 01371 ssh_known_hosts_read_entries
182 1590 ssh_strict_fopen call site: 01590 ssh_send_kex
168 491 sha512_final call site: 00491 pki_openssh_import_privkey_blob
85 1285 ssh_packet_send call site: 01285 ssh_send_rekex
61 2917 libcrux_ml_kem_ind_cpa_serialize_public_key_mut_89 call site: 02917 ssh_packet_send
38 1152 ssh_buffer_pack_va call site: 01152 _ssh_buffer_pack
32 840 ssh_bind_options_set call site: 00840 ssh_bind_set_algo
31 1044 pki_key_dup call site: 01044 ssh_key_free
29 796 ssh_find_all_matching call site: 00796 ssh_prefix_default_algos
25 457 ssh_pki_import_pubkey_blob call site: 00457 pki_private_key_decrypt
25 1800 packet_send2 call site: 01800 compress_buffer

Runtime coverage analysis

Covered functions
442
Functions that are reachable but not covered
528
Reachable functions
798
Percentage of reachable functions covered
33.83%
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 33
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 8
src/pki_container_openssh.c 4
src/base64.c 4
src/bignum.c 4
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_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 2764 66.4%
gold [1:9] 77 1.85%
yellow [10:29] 49 1.17%
greenyellow [30:49] 117 2.81%
lawngreen 50+ 1153 27.7%
All colors 4160 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
404 3092 ssh_pki_import_pubkey_blob call site: 03092 ssh_userauth_try_publickey
250 3520 ssh_key_size_allowed_rsa call site: 03520 ssh_userauth_agent_publickey
248 3792 ssh_signature_free call site: 03792 ssh_event_add_connector
202 757 ssh_lowercase call site: 00757 ssh_config_parse
151 604 ssh_strict_fopen call site: 00604 ssh_config_parse
96 1464 pki_import_cert_buffer call site: 01464 ssh_userauth_publickey_auto
85 422 ssh_options_set call site: 00422 ssh_options_set
83 1062 ssh_connect call site: 01062 ssh_socket_connect_proxyjump
77 4067 ssh_disconnect call site: 04067 select_loop
74 2996 ssh_client_hybrid_mlkem_init call site: 02996 atomicio
52 1796 packet_send2 call site: 01796 ssh_pcap_context_write
48 1242 ssh_buffer_add_data call site: 01242 base64_to_bin

Runtime coverage analysis

Covered functions
593
Functions that are reachable but not covered
455
Reachable functions
975
Percentage of reachable functions covered
53.33%
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 33
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 13
src/callbacks.c 6
src/options.c 5
src/config_parser.c 6
src/kex.c 19
src/token.c 7
src/config.c 15
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 15
src/dh.c 4
src/base64.c 6
src/libcrypto.c 6
src/bignum.c 4
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

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 829 0 3625 400
ssh_packet_userauth_request /src/libssh/src/messages.c 4 ['N/A', 'char', 'N/A', 'N/A'] 34 0 898 187 54 733 0 3808 295
ssh_packet_socket_callback /src/libssh/src/packet.c 3 ['N/A', 'size_t', 'N/A'] 26 0 992 133 47 689 1 3456 244
sftp_init /src/libssh/src/sftp.c 1 ['N/A'] 29 0 512 83 26 739 0 3630 169
ssh_server_connection_callback /src/libssh/src/server.c 1 ['N/A'] 28 0 491 85 25 699 0 3400 168
ssh_channel_request_pty /src/libssh/src/channels.c 1 ['N/A'] 30 0 15 3 2 713 0 3520 163
process_readdir /src/libssh/src/sftpserver.c 1 ['N/A'] 26 0 236 34 13 723 0 3534 124
ssh_packet_server_sntrup761x25519_init /src/libssh/src/sntrup761.c 4 ['N/A', 'char', 'N/A', 'N/A'] 27 0 398 64 24 733 0 3615 122
ssh_packet_server_dhgex_request /src/libssh/src/dh-gex.c 4 ['N/A', 'char', 'N/A', 'N/A'] 27 0 284 51 18 682 0 3299 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 127 0 588 89

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

Functions statically reachable by fuzzers
71.0%
1126 / 1581
Cyclomatic complexity statically reachable by fuzzers
72.0%
7784 / 10842

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_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_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', 'pki_import_pubkey_buffer', '_ssh_log', 'ssh_pki_import_pubkey_blob', 'pki_key_clean', 'ssh_buffer_unpack_va', 'pki_pubkey_build_rsa', 'pki_pubkey_build_ed25519']

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_log', 'ssh_options_set', 'crypto_free', 'ssh_free', 'ssh_config_parse_line_internal', 'ssh_socket_close', 'match_cidr_address_list']

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', 'pki_pubkey_build_rsa', 'ssh_pki_import_pubkey_file', 'ssh_buffer_unpack_va']

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', 'sftp_parse_attr_3']

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_pki_import_privkey_file', 'ssh_pki_import_privkey_base64', 'ssh_bind_options_set', 'pki_private_key_from_base64', 'calloc', 'ssh_strict_fopen']

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=['libcrux_ml_kem_vector_portable_vector_type_zero', 'ssh_list_prepend', 'ssh_strict_fopen', 'sha512_final', 'ssh_packet_send', 'libcrux_ml_kem_ind_cpa_serialize_public_key_mut_89', 'ssh_buffer_pack_va', 'ssh_bind_options_set', 'pki_key_dup', 'ssh_find_all_matching']

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_key_size_allowed_rsa', 'ssh_signature_free', 'ssh_lowercase', 'ssh_strict_fopen', 'pki_import_cert_buffer', 'ssh_options_set', 'ssh_connect', 'ssh_disconnect', 'ssh_client_hybrid_mlkem_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_client_fuzzer_nalloc', 'ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc']
hmac_init 37 17 45.94% ['ssh_server_fuzzer', 'ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc']
ssh_key_cmp 50 17 34.0% ['ssh_server_fuzzer', 'ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc']
pki_pubkey_build_rsa 42 23 54.76% ['ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc']
pki_private_key_from_base64 77 40 51.94% ['ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_pubkey_fuzzer_nalloc']
ssh_config_make_absolute 41 19 46.34% ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc']
match_cidr_address_list 168 77 45.83% ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_options_set 717 386 53.83% ['ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_socket_close 33 15 45.45% ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_pki_openssh_import 135 74 54.81% ['ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_pubkey_fuzzer_nalloc']
ssh_bind_options_set 361 172 47.64% ['ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_bind_config_fuzzer']
ssh_pki_import_privkey_file 62 26 41.93% ['ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_bind_accept_fd 127 41 32.28% ['ssh_server_fuzzer']
ssh_channel_new 44 22 50.0% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
channel_default_bufferize 45 18 40.0% ['ssh_server_fuzzer']
ssh_curve25519_init 50 25 50.0% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_retrieve_dhgroup 52 16 30.76% ['ssh_server_fuzzer']
ssh_packet_server_hybrid_mlkem_init 255 102 40.0% ['ssh_server_fuzzer']
sshkdf_derive_key 73 25 34.24% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_mac_ctx_init 35 19 54.28% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_send_kex 89 48 53.93% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_hashbufout_add_cookie 31 17 54.83% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_message_queue 35 18 51.42% ['ssh_server_fuzzer']
ssh_execute_server_request 243 81 33.33% ['ssh_server_fuzzer']
ssh_msg_userauth_build_digest 53 28 52.83% ['ssh_server_fuzzer']
ssh_mlkem_encapsulate 57 20 35.08% ['ssh_server_fuzzer']
ssh_packet_send 62 24 38.70% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_packet_encrypt 90 37 41.11% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
pki_key_dup_common_init 43 15 34.88% ['ssh_server_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc']
ssh_key_signature_to_char 33 16 48.48% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc']
ssh_pki_export_signature_blob 54 26 48.14% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
pki_key_dup 221 59 26.69% ['ssh_server_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc']
pki_key_to_blob 335 126 37.61% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
pki_sign_data 81 43 53.08% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_get_key_params 44 20 45.45% ['ssh_server_fuzzer']
ssh_auth_reply_default 51 13 25.49% ['ssh_server_fuzzer']
ssh_channel_free 38 5 13.15% ['ssh_client_fuzzer_nalloc']
ssh_connect 121 55 45.45% ['ssh_client_fuzzer_nalloc']
libcrux_sha3_generic_keccak_portable_keccak1_96 31 15 48.38% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
libcrux_sha3_generic_keccak_portable_keccak1_ad0 31 15 48.38% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_client_hybrid_mlkem_init 87 43 49.42% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_packet_client_hybrid_mlkem_reply 148 59 39.86% ['ssh_client_fuzzer_nalloc']
ssh_client_select_hostkeys 70 27 38.57% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
revert_kex_callbacks 45 4 8.888% ['ssh_client_fuzzer_nalloc']
ssh_known_hosts_get_algorithms_names 75 25 33.33% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_options_apply 121 53 43.80% ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
ssh_packet_client_sntrup761x25519_reply 64 22 34.37% ['ssh_client_fuzzer_nalloc']

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/auth.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/misc.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/getrandom_crypto.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/threads.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/external/blowfish.c ['ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] []
/src/libssh/src/ttyopts.c [] []
/src/libssh/tests/fuzz/ssh_pubkey_fuzzer.c ['ssh_pubkey_fuzzer_nalloc'] ['ssh_pubkey_fuzzer_nalloc']
/src/libssh/src/client.c ['ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/crypto_common.c [] []
/src/libssh/src/mlkem.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/pki_container_openssh.c ['ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_pubkey_fuzzer_nalloc']
/src/libssh/src/threads/pthread.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/bignum.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/packet_crypt.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/libcrypto.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/gzip.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/kex.c ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/bind_config.c ['ssh_bind_config_fuzzer'] ['ssh_bind_config_fuzzer']
/src/libssh/src/knownhosts.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/server.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/token.c ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/external/libcrux_mlkem768_sha3.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/connect.c ['ssh_client_fuzzer_nalloc'] []
/src/libssh/src/sftpserver.c [] []
/src/libssh/src/dh_crypto.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/pki_ed25519_common.c ['ssh_sshsig_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc'] []
/src/libssh/src/curve25519_crypto.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/tests/fuzz/ssh_privkey_fuzzer.c ['ssh_privkey_fuzzer_nalloc'] ['ssh_privkey_fuzzer_nalloc']
/src/libssh/src/ecdh_crypto.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/mlkem_native.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/include/libssh/sftp_priv.h [] []
/src/libssh/src/buffer.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/external/sntrup761.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/tests/fuzz/ssh_sftp_attr_fuzzer.c ['ssh_sftp_attr_fuzzer_nalloc'] ['ssh_sftp_attr_fuzzer_nalloc']
/src/libssh/src/socket.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/pki_crypto.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/packet.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/options.c ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/dh.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/callbacks.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/string.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/tests/fuzz/ssh_bind_config_fuzzer.c ['ssh_bind_config_fuzzer'] ['ssh_bind_config_fuzzer']
/src/libssh/src/wrapper.c ['ssh_privkey_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/match.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/kdf.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/tests/fuzz/ssh_client_config_fuzzer.c ['ssh_client_config_fuzzer'] ['ssh_client_config_fuzzer']
/src/libssh/src/sntrup761.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/threads/libcrypto.c ['ssh_known_hosts_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc']
/src/libssh/src/hybrid_mlkem.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/messages.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer']
/src/libssh/src/curve25519.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/config.c ['ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer']
/src/libssh/src/init.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/packet_cb.c [] []
/src/libssh/src/external/bcrypt_pbkdf.c ['ssh_privkey_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] []
/src/libssh/src/config_parser.c ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_bind_config_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/sftp.c ['ssh_sftp_attr_fuzzer_nalloc'] ['ssh_sftp_attr_fuzzer_nalloc']
/src/libssh/src/connector.c ['ssh_client_fuzzer_nalloc'] []
/src/libssh/src/base64.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_pubkey_fuzzer_nalloc']
/src/libssh/src/agent.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/ecdh.c [] []
/src/libssh/tests/fuzz/ssh_known_hosts_fuzzer.c ['ssh_known_hosts_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc']
/src/libssh/src/pki.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/tests/fuzz/ssh_sshsig_fuzzer.c ['ssh_sshsig_fuzzer_nalloc'] ['ssh_sshsig_fuzzer_nalloc']
/src/libssh/src/session.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/log.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/tests/fuzz/ssh_client_fuzzer.c ['ssh_client_fuzzer_nalloc'] ['ssh_client_fuzzer_nalloc']
/src/libssh/tests/fuzz/ssh_server_fuzzer.c ['ssh_server_fuzzer'] ['ssh_server_fuzzer']
/src/libssh/tests/fuzz/nallocinc.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/sftp_common.c ['ssh_sftp_attr_fuzzer_nalloc'] ['ssh_sftp_attr_fuzzer_nalloc']
/src/libssh/src/poll.c ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_known_hosts_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/pki_context.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/md_crypto.c ['ssh_privkey_fuzzer_nalloc', 'ssh_sshsig_fuzzer_nalloc', 'ssh_client_config_fuzzer', 'ssh_pubkey_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/dh-gex.c ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/channels.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/bind.c ['ssh_bind_config_fuzzer', 'ssh_server_fuzzer'] ['ssh_bind_config_fuzzer', 'ssh_server_fuzzer']
/src/libssh/src/error.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_bind_config_fuzzer', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc']
/src/libssh/src/pcap.c ['ssh_client_config_fuzzer', 'ssh_sftp_attr_fuzzer_nalloc', 'ssh_server_fuzzer', 'ssh_client_fuzzer_nalloc'] []

Directories in report

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