Fuzz introspector: fuzz_dump
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
121 299 4 :

['signature_hash_key(pgp_key_pkt_t const&, rnp::Hash&, pgp_version_t)', 'pgp_key_pkt_t::pgp_key_pkt_t(pgp_key_pkt_t const&, bool)', 'pgp_key_pkt_t::~pgp_key_pkt_t()', 'pgp_key_pkt_t::fill_hashed_data()']

121 299 signature_hash_key(pgp_key_pkt_tconst&,rnp::Hash&,pgp_version_t) call site: 00000 /src/rnp/src/librepgp/stream-sig.cpp:54
6 6 1 :

['write_packet_len(unsigned char*, unsigned long)']

8 30 pgp_packet_body_t::write(pgp_dest_t&,bool) call site: 00000 /src/rnp/src/librepgp/stream-packet.cpp:921
4 13 3 :

['fwrite', 'rnp_log_switch()', 'fputc']

4 13 pgp::pkt::sigsub::Raw::create(unsignedcharconst*,unsignedlong,bool) call site: 00000 /src/rnp/src/lib/sig_subpacket.cpp:197
4 13 3 :

['fwrite', 'rnp_log_switch()', 'fputc']

4 13 init_dst_common(pgp_dest_t*,unsignedlong) call site: 00000 /src/rnp/src/librepgp/stream-common.cpp:637
0 0 None 106 814 armored_src_read(pgp_source_t*,void*,unsignedlong,unsignedlong*) call site: 00000 /src/rnp/src/librepgp/stream-armor.cpp:262
0 0 None 100 596 armored_src_read(pgp_source_t*,void*,unsignedlong,unsignedlong*) call site: 00000 /src/rnp/src/librepgp/stream-armor.cpp:353
0 0 None 16 443 armored_src_read(pgp_source_t*,void*,unsignedlong,unsignedlong*) call site: 00000 /src/rnp/src/librepgp/stream-armor.cpp:365
0 0 None 16 401 pgp::pkt::Signature::parse_v4up(pgp_packet_body_t&) call site: 00000 /src/rnp/src/librepgp/stream-sig.cpp:931
0 0 None 16 148 pgp_packet_body_t::read(pgp_source_t&) call site: 00000 /src/rnp/src/librepgp/stream-packet.cpp:881
0 0 None 12 21 pgp::Fingerprint::Fingerprint(pgp_key_pkt_tconst&) call site: 00000 /src/rnp/src/lib/fingerprint.cpp:49
0 0 None 10 132 pgp_dilithium_exdsa_composite_public_key_t::parse_component_keys(std::__1::vector >) call site: 00000 /src/rnp/src/lib/crypto/dilithium_exdsa_composite.cpp:368
0 0 None 10 132 pgp_kyber_ecdh_composite_public_key_t::parse_component_keys(std::__1::vector >) call site: 00000 /src/rnp/src/lib/crypto/kyber_ecdh_composite.cpp:478

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 rnp_input_from_memory [call site] 00001
1 rnp_output_to_null [call site] 00002
1 rnp_dump_packets_to_output [call site] 00003
1 rnp_output_destroy [call site] 00004
1 rnp_input_destroy [call site] 00005
1 rnp_input_from_memory [call site] 00006
1 rnp_dump_packets_to_json [call site] 00007
1 rnp_buffer_destroy [call site] 00008
1 rnp_input_destroy [call site] 00009