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

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 159 75.3%
gold [1:9] 8 3.79%
yellow [10:29] 1 0.47%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 43 20.3%
All colors 211 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
57 120 sshkey_ssh_name_from_type_nid call site: 00120 cert_free
45 31 sshlog call site: 00031 match_pattern_list
18 101 sshbuf_ptr call site: 00101 sshbuf_put
10 11 sshkey_is_cert call site: 00011 cert_new
9 88 sshkey_impl_from_key call site: 00088 helper_by_key
8 22 sshbuf_free call site: 00022 ssh_signal
7 80 sshbuf_free call site: 00080 sshkey_free
2 98 sshbuf_len call site: 00098 sshbuf_putb
1 7 sshkey_generate call site: 00007 sshkey_impl_from_type
1 77 sshbuf_free call site: 00077 freezero
1 203 LLVMFuzzerTestOneInput call site: 00203 sshkey_verify

Runtime coverage analysis

Covered functions
45
Functions that are reachable but not covered
71
Reachable functions
92
Percentage of reachable functions covered
22.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
regress/misc/fuzz-harness/sig_fuzz.cc 2
sshkey.c 19
sshbuf.c 9
misc.c 1
log.c 3
match.c 3
xmalloc.c 2
fatal.c 1
openbsd-compat/strlcpy.c 1
openbsd-compat/vis.c 2
cleanup.c 1
openbsd-compat/freezero.c 1
ssh-pkcs11-client.c 3
sshbuf-getput-basic.c 4
openbsd-compat/recallocarray.c 1
ssherr.c 1
ssherr-libcrypto.c 1
sshbuf-misc.c 1

Fuzzer: sshsigopt_fuzz

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 0 0.0%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 32 100.%
All colors 32 100

Runtime coverage analysis

Covered functions
7
Functions that are reachable but not covered
9
Reachable functions
16
Percentage of reachable functions covered
43.75%
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
regress/misc/fuzz-harness/sshsigopt_fuzz.cc 1
sshsig.c 2
misc.c 4

Fuzzer: agent_fuzz

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 2009 100.%
gold [1:9] 0 0.0%
yellow [10:29] 0 0.0%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 0 0.0%
All colors 2009 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
2008 0 EP call site: 00000 test_one

Runtime coverage analysis

Covered functions
0
Functions that are reachable but not covered
479
Reachable functions
479
Percentage of reachable functions covered
0.0%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
regress/misc/fuzz-harness/agent_fuzz.cc 1
regress/misc/fuzz-harness/agent_fuzz_helper.c 9
log.c 6
match.c 3
xmalloc.c 6
fatal.c 1
openbsd-compat/strlcpy.c 1
openbsd-compat/vis.c 2
regress/misc/fuzz-harness/../../../ssh-agent.c 43
misc-agent.c 1
ssh-pkcs11-client.c 13
openbsd-compat/recallocarray.c 1
sshbuf.c 15
misc.c 6
openbsd-compat/freezero.c 1
sshkey.c 78
sshbuf-getput-basic.c 18
ssherr.c 1
ssherr-libcrypto.c 1
sshbuf-misc.c 3
openbsd-compat/base64.c 2
cipher.c 8
openbsd-compat/bcrypt_pbkdf.c 2
openbsd-compat/../crypto_api.h 1
openbsd-compat/blowfish.c 6
openbsd-compat/arc4random.c 6
openbsd-compat/./arc4random.h 3
openbsd-compat/bsd-getentropy.c 1
openbsd-compat/./chacha_private.h 3
cipher-chachapoly-libcrypto-mt.c 10
cipher-chachapoly-libcrypto.c 3
cipher-ctr-mt.c 7
openbsd-compat/timingsafe_bcmp.c 1
poly1305.c 1
ssh-ecdsa.c 1
digest-openssl.c 4
openbsd-compat/strlcat.c 1
readpass.c 6
openbsd-compat/readpassphrase.c 2
openbsd-compat/bsd-closefrom.c 2
ssh-sk.c 8
atomicio.c 2

Fuzzer: authopt_fuzz

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 64 39.5%
gold [1:9] 3 1.85%
yellow [10:29] 0 0.0%
greenyellow [30:49] 2 1.23%
lawngreen 50+ 93 57.4%
All colors 162 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
52 84 sshauthopt_parse call site: 00084 a2tun
4 50 recallocarray call site: 00050 __errno_location
3 152 sshauthopt_merge call site: 00152 dup_strings
2 156 sshauthopt_merge call site: 00156 sshauthopt_free
1 77 a2port call site: 00077 ntohs
1 148 dup_strings call site: 00148 dup_strings
1 150 sshauthopt_merge call site: 00150 dup_strings

Runtime coverage analysis

Covered functions
19
Functions that are reachable but not covered
44
Reachable functions
63
Percentage of reachable functions covered
30.16%
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
regress/misc/fuzz-harness/authopt_fuzz.cc 1
auth-options.c 7
misc.c 8
openbsd-compat/recallocarray.c 1
openbsd-compat/strtonum.c 1
xmalloc.c 3
fatal.c 1
log.c 2
match.c 3
cleanup.c 1
openbsd-compat/strlcpy.c 1
openbsd-compat/vis.c 2
openbsd-compat/freezero.c 1

Fuzzer: pubkey_fuzz

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 135 49.0%
gold [1:9] 1 0.36%
yellow [10:29] 0 0.0%
greenyellow [30:49] 4 1.45%
lawngreen 50+ 135 49.0%
All colors 275 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
45 15 sshlog call site: 00015 match_pattern_list
44 158 sshkey_ssh_name_from_type_nid call site: 00158 sshkey_putb
13 91 sshkey_type_is_cert call site: 00091 sshkey_match_keyname_to_sigalgs
10 128 sshkey_impl_from_key call site: 00128 helper_by_key
8 6 sshbuf_fromb call site: 00006 ssh_signal
3 124 sshkey_free call site: 00124 pkcs11_key_free
2 148 recallocarray call site: 00148 __errno_location
2 155 sshbuf_allocate call site: 00155 sshkey_ssh_name_from_type_nid
1 68 sshbuf_set_parent call site: 00068 sshbuf_free
1 88 type_from_name call site: 00088 strcasecmp
1 118 cert_new call site: 00118 cert_free
1 151 recallocarray call site: 00151 memset

Runtime coverage analysis

Covered functions
96
Functions that are reachable but not covered
57
Reachable functions
106
Percentage of reachable functions covered
46.23%
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
regress/misc/fuzz-harness/pubkey_fuzz.cc 1
sshkey.c 25
sshbuf.c 14
misc.c 1
log.c 3
match.c 3
xmalloc.c 2
fatal.c 1
openbsd-compat/strlcpy.c 1
openbsd-compat/vis.c 2
cleanup.c 1
openbsd-compat/freezero.c 1
sshbuf-getput-basic.c 11
ssh-pkcs11-client.c 3
openbsd-compat/recallocarray.c 1
ssherr.c 1
ssherr-libcrypto.c 1
sshbuf-misc.c 1

Fuzzer: sshsig_fuzz

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 143 36.0%
gold [1:9] 3 0.75%
yellow [10:29] 6 1.51%
greenyellow [30:49] 7 1.76%
lawngreen 50+ 238 59.9%
All colors 397 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
31 268 sshkey_ssh_name_from_type_nid call site: 00268 sshkey_putb
28 35 match_pattern call site: 00035 sshfatal
13 218 sshkey_type_is_cert call site: 00218 sshkey_match_keyname_to_sigalgs
10 113 sshsig_peek_hashalg call site: 00113 ssherr_libcrypto
10 252 sshkey_impl_from_key call site: 00252 helper_by_key
8 16 sshbuf_fromb call site: 00016 ssh_signal
6 6 log_init call site: 00006 fprintf
4 25 sshlog call site: 00025 match_pattern_list
4 145 hash_buffer call site: 00145 xstrdup
3 248 sshkey_free call site: 00248 pkcs11_key_free
2 140 ssh_digest_memory call site: 00140 ssh_err
2 169 recallocarray call site: 00169 __errno_location

Runtime coverage analysis

Covered functions
109
Functions that are reachable but not covered
55
Reachable functions
130
Percentage of reachable functions covered
57.69%
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
regress/misc/fuzz-harness/sshsig_fuzz.cc 1
sshbuf.c 14
log.c 5
sshsig.c 6
misc.c 2
match.c 3
xmalloc.c 4
fatal.c 1
openbsd-compat/strlcpy.c 1
openbsd-compat/vis.c 2
cleanup.c 1
openbsd-compat/freezero.c 1
sshbuf-misc.c 2
openbsd-compat/timingsafe_bcmp.c 1
sshbuf-getput-basic.c 12
ssherr.c 1
ssherr-libcrypto.c 1
digest-openssl.c 5
openbsd-compat/strlcat.c 1
openbsd-compat/recallocarray.c 1
sshkey.c 26
ssh-pkcs11-client.c 3

Fuzzer: privkey_fuzz

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 47.4%
gold [1:9] 1 0.34%
yellow [10:29] 4 1.38%
greenyellow [30:49] 2 0.69%
lawngreen 50+ 145 50.1%
All colors 289 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
45 16 sshlog call site: 00016 match_pattern_list
44 168 sshkey_ssh_name_from_type_nid call site: 00168 sshkey_putb
13 101 sshkey_from_blob_internal call site: 00101 sshkey_match_keyname_to_sigalgs
10 138 sshkey_impl_from_key call site: 00138 helper_by_key
8 7 sshbuf_ptr call site: 00007 ssh_signal
3 134 sshkey_free call site: 00134 pkcs11_key_free
2 158 recallocarray call site: 00158 __errno_location
2 165 sshbuf_allocate call site: 00165 sshkey_ssh_name_from_type_nid
1 73 type_from_name call site: 00073 strcasecmp
1 84 sshbuf_set_parent call site: 00084 sshbuf_free
1 97 sshbuf_fromb call site: 00097 sshbuf_free
1 128 cert_new call site: 00128 cert_free

Runtime coverage analysis

Covered functions
111
Functions that are reachable but not covered
57
Reachable functions
109
Percentage of reachable functions covered
47.71%
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.
Warning: The number of covered functions are larger than the number of reachable functions. This means that there are more functions covered at runtime than are extracted using static analysis. This is likely a result of the static analysis component failing to extract the right call graph or the coverage runtime being compiled with sanitizers in code that the static analysis has not analysed. This can happen if lto/gold is not used in all places that coverage instrumentation is used.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
regress/misc/fuzz-harness/privkey_fuzz.cc 1
sshbuf.c 14
sshkey.c 28
sshbuf-getput-basic.c 11
misc.c 1
log.c 3
match.c 3
xmalloc.c 2
fatal.c 1
openbsd-compat/strlcpy.c 1
openbsd-compat/vis.c 2
cleanup.c 1
openbsd-compat/freezero.c 1
ssh-pkcs11-client.c 3
openbsd-compat/recallocarray.c 1
ssherr.c 1
ssherr-libcrypto.c 1
sshbuf-misc.c 1

Fuzzer: kex_fuzz

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 1116 59.5%
gold [1:9] 167 8.91%
yellow [10:29] 4 0.21%
greenyellow [30:49] 20 1.06%
lawngreen 50+ 566 30.2%
All colors 1873 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
185 412 cipher_init call site: 00412 evp_aes_ctr_mt
99 1174 ssh_digest_bytes call site: 01174 umac_final
92 1361 ssh_packet_send2_wrapped call site: 01361 kex_start_rekex
51 599 private2_decrypt call site: 00599 chachapoly_crypt_mt
44 945 ssh_remote_ipaddr call site: 00945 get_peer_ipaddr
36 341 private2_decrypt call site: 00341 bcrypt_pbkdf
32 1305 ssh_packet_close_internal call site: 01305 ssh_packet_clear_keys
25 702 sshkey_parse_private2 call site: 00702 sshkey_parse_private_pem_fileblob
24 1729 ssh_packet_next call site: 01729 sshpkt_disconnect
23 1570 choose_comp call site: 01570 ssh_remote_port
20 233 ssh_err call site: 00233 sshkey_putb
19 728 sshkey_check_rsa_length call site: 00728 sshkey_new

Runtime coverage analysis

Covered functions
235
Functions that are reachable but not covered
326
Reachable functions
549
Percentage of reachable functions covered
40.62%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
regress/misc/fuzz-harness/kex_fuzz.cc 11
log.c 6
xmalloc.c 5
fatal.c 1
match.c 6
cleanup.c 1
openbsd-compat/strlcpy.c 1
openbsd-compat/vis.c 2
sshbuf.c 18
sshkey.c 52
misc.c 11
sshbuf-getput-basic.c 16
openbsd-compat/recallocarray.c 1
sshbuf-misc.c 3
openbsd-compat/base64.c 1
openbsd-compat/freezero.c 1
ssh-pkcs11-client.c 3
ssherr.c 1
ssherr-libcrypto.c 1
cipher.c 14
openbsd-compat/bcrypt_pbkdf.c 2
openbsd-compat/../crypto_api.h 1
openbsd-compat/blowfish.c 6
openbsd-compat/arc4random.c 6
openbsd-compat/./arc4random.h 3
openbsd-compat/bsd-getentropy.c 1
openbsd-compat/./chacha_private.h 3
cipher-chachapoly-libcrypto-mt.c 11
cipher-chachapoly-libcrypto.c 4
cipher-ctr-mt.c 7
openbsd-compat/timingsafe_bcmp.c 1
poly1305.c 1
ssh-ecdsa.c 1
ssh_api.c 11
entropy.c 1
openbsd-compat/openssl-compat.c 2
packet.c 53
kex.c 23
mac.c 6
umac.c 27
./umac.c 27
hmac.c 6
digest-openssl.c 9
canohost.c 7
kex-names.c 7
openbsd-compat/strlcat.c 1
compat.c 2
dispatch.c 2
openbsd-compat/fmt_scaled.c 1

Analyses and suggestions

Optimal target analysis

Remaining optimal interesting functions

The following table shows a list of functions that are optimal targets. Optimal targets are identified by finding the functions that in combination, yield a high code coverage.

Func name Functions filename Arg count Args Function depth hitcount instr count bb count cyclomatic complexity Reachable functions Incoming references total cyclomatic complexity Unreached complexity
kex_gen_client /src/hpn-ssh/kexgen.c 1 ['N/A'] 30 0 145 26 5 1009 0 3712 1709
ssh_mldsa44_ed25519_sign /src/hpn-ssh/ssh-mldsa-eddsa.c 9 ['N/A', 'N/A', 'N/A', 'N/A', 'size_t', 'N/A', 'N/A', 'N/A', 'int'] 21 0 191 35 14 557 0 1690 999
sshkey_check_revoked /src/hpn-ssh/authfile.c 2 ['N/A', 'N/A'] 22 0 55 9 2 200 0 1431 625
xxxmain /src/hpn-ssh/regress/misc/fuzz-harness/../../../ssh-agent.c 2 ['int', 'N/A'] 28 0 1478 262 61 496 0 2819 521
kexgex_server /src/hpn-ssh/kexgexs.c 1 ['N/A'] 31 0 16 3 2 465 0 2326 160
sshauthopt_from_cert /src/hpn-ssh/auth-options.c 1 ['N/A'] 9 0 106 19 9 84 0 461 124
sshkey_save_private /src/hpn-ssh/authfile.c 7 ['N/A', 'N/A', 'N/A', 'N/A', 'int', 'N/A', 'int'] 23 0 76 11 5 277 0 1437 119

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

Functions statically reachable by fuzzers
76.0%
1568 / 2074
Cyclomatic complexity statically reachable by fuzzers
71.0%
7882 / 11070

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.

regress/misc/fuzz-harness/sig_fuzz.cc

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=['sshkey_ssh_name_from_type_nid', 'sshlog', 'sshbuf_ptr', 'sshkey_is_cert', 'sshkey_impl_from_key', 'sshbuf_free', 'sshbuf_len', 'sshkey_generate']

regress/misc/fuzz-harness/sshsigopt_fuzz.cc

Dictionary

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


regress/misc/fuzz-harness/agent_fuzz.cc

Dictionary

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


regress/misc/fuzz-harness/authopt_fuzz.cc

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=['sshauthopt_parse', 'recallocarray', 'sshauthopt_merge', 'a2port', 'dup_strings']

regress/misc/fuzz-harness/pubkey_fuzz.cc

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=['sshlog', 'sshkey_ssh_name_from_type_nid', 'sshkey_type_is_cert', 'sshkey_impl_from_key', 'sshbuf_fromb', 'sshkey_free', 'recallocarray', 'sshbuf_allocate', 'sshbuf_set_parent', 'type_from_name']

regress/misc/fuzz-harness/sshsig_fuzz.cc

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=['sshkey_ssh_name_from_type_nid', 'match_pattern', 'sshkey_type_is_cert', 'sshsig_peek_hashalg', 'sshkey_impl_from_key', 'sshbuf_fromb', 'log_init', 'sshlog', 'hash_buffer', 'sshkey_free']

regress/misc/fuzz-harness/privkey_fuzz.cc

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=['sshlog', 'sshkey_ssh_name_from_type_nid', 'sshkey_from_blob_internal', 'sshkey_impl_from_key', 'sshbuf_ptr', 'sshkey_free', 'recallocarray', 'sshbuf_allocate', 'type_from_name', 'sshbuf_set_parent']

regress/misc/fuzz-harness/kex_fuzz.cc

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=['cipher_init', 'ssh_digest_bytes', 'ssh_packet_send2_wrapped', 'private2_decrypt', 'ssh_remote_ipaddr', 'ssh_packet_close_internal', 'sshkey_parse_private2', 'ssh_packet_next', 'choose_comp']

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/hpn-ssh/./umac.c ['kex_fuzz'] []
/src/hpn-ssh/umac.c ['kex_fuzz'] []
/src/hpn-ssh/smult_curve25519_ref.c [] []
/src/hpn-ssh/openbsd-compat/bsd-getentropy.c ['agent_fuzz', 'kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/openbsd-compat/libressl-api-compat.c [] []
/src/hpn-ssh/auth-options.c ['authopt_fuzz'] ['authopt_fuzz']
/src/hpn-ssh/dh.c [] []
/src/hpn-ssh/openbsd-compat/recallocarray.c ['sig_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz']
/src/hpn-ssh/sshkey.c ['sig_fuzz', 'agent_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sig_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz']
/src/hpn-ssh/openbsd-compat/blowfish.c ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/kexecdh.c [] []
/src/hpn-ssh/sshbuf-getput-crypto.c [] []
/src/hpn-ssh/openbsd-compat/timingsafe_bcmp.c ['agent_fuzz', 'sshsig_fuzz', 'kex_fuzz'] ['sshsig_fuzz']
/src/hpn-ssh/fatal.c ['sig_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/kexgex.c [] []
/src/hpn-ssh/hmac.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/sshsig.c ['sshsigopt_fuzz', 'sshsig_fuzz'] ['sshsigopt_fuzz', 'sshsig_fuzz']
/src/hpn-ssh/authfile.c [] []
/src/hpn-ssh/xmalloc.c ['sig_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sshsig_fuzz', 'kex_fuzz']
/src/hpn-ssh/openbsd-compat/freezero.c ['sig_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sig_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz']
/src/hpn-ssh/ssh-ecdsa.c ['agent_fuzz', 'kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/poly1305.c ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/ed25519-openssl.c [] []
/src/hpn-ssh/misc-agent.c ['agent_fuzz'] []
/src/hpn-ssh/cipher-ctr-mt.c ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/compat.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/kex.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/platform-tracing.c [] []
/src/hpn-ssh/openbsd-compat/bsd-getpeereid.c [] []
/src/hpn-ssh/ssh-pkcs11-client.c ['sig_fuzz', 'agent_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/ssherr-libcrypto.c ['sig_fuzz', 'agent_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/kexdh.c [] []
/src/hpn-ssh/regress/misc/fuzz-harness/agent_fuzz.cc ['agent_fuzz'] []
/src/hpn-ssh/platform-pledge.c [] []
/src/hpn-ssh/ssh-rsa.c [] []
/src/hpn-ssh/openbsd-compat/strtonum.c ['authopt_fuzz'] ['authopt_fuzz']
/src/hpn-ssh/log.c ['sig_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sig_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz']
/src/hpn-ssh/ssh-ed25519-sk.c [] []
/src/hpn-ssh/addr.c [] []
/src/hpn-ssh/openbsd-compat/../crypto_api.h ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/kexsntrup761x25519.c [] []
/src/hpn-ssh/addrmatch.c [] []
/src/hpn-ssh/regress/misc/fuzz-harness/ssh-sk-null.cc [] []
/src/hpn-ssh/kexgen.c [] []
/src/hpn-ssh/entropy.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/openbsd-compat/bsd-misc.c [] []
/src/hpn-ssh/atomicio.c ['agent_fuzz'] []
/src/hpn-ssh/openbsd-compat/arc4random.c ['agent_fuzz', 'kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/kexmlkem768x25519.c [] []
/src/hpn-ssh/readpass.c ['agent_fuzz'] []
/src/hpn-ssh/kexgexs.c [] []
/src/hpn-ssh/sshbuf-getput-basic.c ['sig_fuzz', 'agent_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sig_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz']
/src/hpn-ssh/cipher-chachapoly-libcrypto-mt.c ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/openbsd-compat/getopt_long.c [] []
/src/hpn-ssh/openbsd-compat/strlcat.c ['agent_fuzz', 'sshsig_fuzz', 'kex_fuzz'] ['sshsig_fuzz', 'kex_fuzz']
/src/hpn-ssh/ssh-mldsa-eddsa.c [] []
/src/hpn-ssh/match.c ['sig_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sshsig_fuzz', 'kex_fuzz']
/src/hpn-ssh/bitmap.c [] []
/src/hpn-ssh/libcrux-mlkem-mldsa.c [] []
/src/hpn-ssh/kexmlkem768ecdh.c [] []
/src/hpn-ssh/regress/misc/fuzz-harness/authopt_fuzz.cc ['authopt_fuzz'] ['authopt_fuzz']
/src/hpn-ssh/openbsd-compat/strlcpy.c ['sig_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/regress/misc/fuzz-harness/sshsig_fuzz.cc ['sshsig_fuzz'] ['sshsig_fuzz']
/src/hpn-ssh/regress/misc/fuzz-harness/privkey_fuzz.cc ['privkey_fuzz'] ['privkey_fuzz']
/src/hpn-ssh/openbsd-compat/openssl-compat.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/ssherr.c ['sig_fuzz', 'agent_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sshsig_fuzz', 'kex_fuzz']
/src/hpn-ssh/sshbuf.c ['sig_fuzz', 'agent_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sig_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz']
/src/hpn-ssh/kex-names.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/openbsd-compat/port-net.c [] []
/src/hpn-ssh/misc.c ['sig_fuzz', 'sshsigopt_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['sshsigopt_fuzz', 'authopt_fuzz', 'sshsig_fuzz', 'kex_fuzz']
/src/hpn-ssh/ssh-sk.c ['agent_fuzz'] []
/src/hpn-ssh/cleanup.c ['sig_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/dispatch.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/regress/misc/fuzz-harness/../../../ssh-agent.c ['agent_fuzz'] []
/src/hpn-ssh/openbsd-compat/./arc4random.h ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/openbsd-compat/bcrypt_pbkdf.c ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/openbsd-compat/base64.c ['agent_fuzz', 'kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/kexgexc.c [] []
/src/hpn-ssh/regress/misc/fuzz-harness/sig_fuzz.cc ['sig_fuzz'] ['sig_fuzz']
/src/hpn-ssh/ssh_api.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/openbsd-compat/vis.c ['sig_fuzz', 'agent_fuzz', 'authopt_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/openbsd-compat/bsd-closefrom.c ['agent_fuzz'] []
/src/hpn-ssh/regress/misc/fuzz-harness/pubkey_fuzz.cc ['pubkey_fuzz'] ['pubkey_fuzz']
/src/hpn-ssh/openbsd-compat/./chacha_private.h ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/./libcrux_internal.h [] []
/src/hpn-ssh/sshbuf-misc.c ['sig_fuzz', 'agent_fuzz', 'pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz'] ['pubkey_fuzz', 'sshsig_fuzz', 'privkey_fuzz', 'kex_fuzz']
/src/hpn-ssh/packet.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/regress/misc/fuzz-harness/kex_fuzz.cc ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/openbsd-compat/arc4random_uniform.c [] []
/src/hpn-ssh/krl.c [] []
/src/hpn-ssh/mac.c ['kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/utf8.c [] []
/src/hpn-ssh/sshbuf-io.c [] []
/src/hpn-ssh/platform-misc.c [] []
/src/hpn-ssh/digest-openssl.c ['agent_fuzz', 'sshsig_fuzz', 'kex_fuzz'] ['sshsig_fuzz', 'kex_fuzz']
/src/hpn-ssh/openbsd-compat/readpassphrase.c ['agent_fuzz'] []
/src/hpn-ssh/regress/misc/fuzz-harness/agent_fuzz_helper.c ['agent_fuzz'] []
/src/hpn-ssh/kexc25519.c [] []
/src/hpn-ssh/ssh-ed25519.c [] []
/src/hpn-ssh/regress/misc/sk-dummy/sk-dummy.c [] []
/src/hpn-ssh/cipher-chachapoly-libcrypto.c ['agent_fuzz', 'kex_fuzz'] []
/src/hpn-ssh/canohost.c ['kex_fuzz'] []
/src/hpn-ssh/sntrup761.c [] []
/src/hpn-ssh/regress/misc/fuzz-harness/sshsigopt_fuzz.cc ['sshsigopt_fuzz'] ['sshsigopt_fuzz']
/src/hpn-ssh/cipher.c ['agent_fuzz', 'kex_fuzz'] ['kex_fuzz']
/src/hpn-ssh/openbsd-compat/fmt_scaled.c ['kex_fuzz'] []
/src/hpn-ssh/ssh-ecdsa-sk.c [] []

Directories in report

Directory
/src/hpn-ssh/openbsd-compat/../
/src/hpn-ssh/./
/src/hpn-ssh/
/src/hpn-ssh/regress/misc/fuzz-harness/../../../
/src/hpn-ssh/regress/misc/fuzz-harness/
/src/hpn-ssh/regress/misc/sk-dummy/
/src/hpn-ssh/openbsd-compat/./
/src/hpn-ssh/openbsd-compat/