Fuzz introspector: fuzz_sigimport
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
14 23 7 :

['__cxa_throw', 'fputc', 'std::invalid_argument::invalid_argument[abi:ne180100](char const*)', '__cxa_allocate_exception', '__cxa_free_exception', 'fwrite', 'rnp_log_switch()']

14 23 rnp::KeyStore::KeyStore(std::__1::basic_string ,std::__1::allocator >const&,rnp::SecurityContext&,rnp::KeyFormat) call site: 00000 /src/rnp/src/librekey/rnp_key_store.cpp:714
8 34 7 :

['__cxa_throw', '__cxa_allocate_exception', 'rnp::rnp_exception::rnp_exception(unsigned int)', 'rnp_log_switch()', 'fwrite', 'rnp::Source::~Source()', 'fputc']

8 34 rnp::ArmoredSource::ArmoredSource(pgp_source_t&,unsignedint) call site: 00000 /src/rnp/src/librepgp/stream-armor.cpp:1161
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 rnp::KeyStore::search(rnp::KeySearchconst&,rnp::Key*) call site: 00000 /src/rnp/src/librekey/rnp_key_store.cpp:678
4 4 1 :

['Botan::System_RNG::System_RNG()']

4 4 rnp::RNG::RNG(rnp::RNG::Type) call site: 00000 /src/rnp/src/lib/crypto/rng.cpp:39
0 6 4 :

['std::__1::unique_ptr >::operator->[abi:ne180100]() const', 'pgp::pkt::sigsub::Raw::raw_type() const', 'pgp::pkt::sigsub::List::size() const', 'pgp::pkt::sigsub::List::operator[](unsigned long) const']

0 6 pgp::pkt::Signature::find_subpkt(unsignedchar,bool,unsignedlong)const call site: 00000 /src/rnp/src/librepgp/stream-sig.cpp:880
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 11 2002 rnp::KeyStore::import_signature(pgp::pkt::Signatureconst&,pgp_sig_import_status_t*) call site: 00000 /src/rnp/src/librekey/rnp_key_store.cpp:549

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 rnp_input_from_memory [call site] 00001
1 rnp_ffi_create [call site] 00002
1 rnp_import_signatures [call site] 00003
1 rnp_buffer_destroy [call site] 00004
1 rnp_input_destroy [call site] 00005
1 rnp_ffi_destroy [call site] 00006