Fuzz introspector: bn_cmp
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
0 0 None 8 8 Botan::allocate_memory(unsignedlong,unsignedlong) call site: 00000 /src/botan/src/lib/utils/allocator.cpp:27

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 fuzz(unsigned char const*, unsigned long) [function] [call site] 00001
2 Botan::BigInt::decode(unsigned char const*, unsigned long) [function] [call site] 00002
3 Botan::BigInt::BigInt(unsigned char const*, unsigned long) [function] [call site] 00003
4 Botan::BigInt::Data::Data() [function] [call site] 00004
4 Botan::BigInt::binary_decode(unsigned char const*, unsigned long) [function] [call site] 00005
5 Botan::BigInt::clear() [function] [call site] 00006
6 Botan::BigInt::Data::set_to_zero() [function] [call site] 00007
7 void Botan::clear_mem<unsigned long>(unsigned long*, unsigned long) [function] [call site] 00008
8 Botan::clear_bytes(void*, unsigned long) [function] [call site] 00009
5 Botan::round_up(unsigned long, unsigned long) [function] [call site] 00010
6 Botan::throw_invalid_argument(char const*, char const*, char const*) [function] [call site] 00011
7 __cxa_allocate_exception [call site] 00012
7 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > Botan::fmt<char const*, char const*, char const*>(std::__1::basic_string_view<char, std::__1::char_traits<char> >, char const* const&, char const* const&, char const* const&) [function] [call site] 00013
8 void Botan::fmt_detail::do_fmt<char const*, char const*, char const*>(std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string_view<char, std::__1::char_traits<char> >, char const* const&, char const* const&, char const* const&) [function] [call site] 00014
9 void Botan::fmt_detail::do_fmt<char const*, char const*>(std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string_view<char, std::__1::char_traits<char> >, char const* const&, char const* const&) [function] [call site] 00015
7 Botan::Invalid_Argument::Invalid_Argument(std::__1::basic_string_view<char, std::__1::char_traits<char> >) [function] [call site] 00016
8 Botan::Exception::Exception(std::__1::basic_string_view<char, std::__1::char_traits<char> >) [function] [call site] 00017
9 std::exception::exception() [function] [call site] 00018
9 std::exception::~exception() [call site] 00019
5 unsigned long Botan::load_be<unsigned long>(unsigned char const*, unsigned long) [function] [call site] 00020
6 unsigned long Botan::load_be<unsigned long, std::__1::span<unsigned char const, 8ul> >(std::__1::span<unsigned char const, 8ul>&&) [function] [call site] 00021
7 void Botan::ranges::assert_exact_byte_length<8ul, std::__1::span<unsigned char const, 8ul>&>(std::__1::span<unsigned char const, 8ul>&) [function] [call site] 00022
7 unsigned long Botan::typecast_copy<unsigned long, std::__1::span<unsigned char const, 8ul>&>(std::__1::span<unsigned char const, 8ul>&) [function] [call site] 00023
8 void Botan::typecast_copy<unsigned long, std::__1::span<unsigned char const, 8ul>&>(unsigned long&, std::__1::span<unsigned char const, 8ul>&) [function] [call site] 00024
9 void Botan::typecast_copy<std::__1::span<unsigned long, 1ul>, std::__1::span<unsigned char const, 8ul>&>(std::__1::span<unsigned long, 1ul>&&, std::__1::span<unsigned char const, 8ul>&) [function] [call site] 00025
10 void Botan::ranges::assert_equal_byte_lengths<std::__1::span<unsigned long, 1ul>&, std::__1::span<unsigned char const, 8ul>&>(std::__1::span<unsigned long, 1ul>&, std::__1::span<unsigned char const, 8ul>&) [function] [call site] 00026
11 void Botan::ranges::assert_exact_byte_length<8ul, std::__1::span<unsigned char const, 8ul>&>(std::__1::span<unsigned char const, 8ul>&) [function] [call site] 00027
10 unsigned long Botan::ranges::size_bytes<std::__1::span<unsigned long, 1ul>&>(std::__1::span<unsigned long, 1ul>&) [function] [call site] 00028
9 __clang_call_terminate [call site] 00029
10 __cxa_begin_catch [call site] 00030
7 Botan::reverse_bytes(unsigned long) [function] [call site] 00031
5 Botan::BigInt::Data::swap(std::__1::vector<unsigned long, Botan::secure_allocator<unsigned long> >&) [function] [call site] 00032
6 Botan::BigInt::Data::invalidate_sig_words() const [function] [call site] 00033
4 Botan::BigInt::Data::~Data() [function] [call site] 00034
2 Botan::BigInt::decode(unsigned char const*, unsigned long) [function] [call site] 00035
2 Botan::BigInt::flip_sign() [function] [call site] 00036
3 Botan::BigInt::reverse_sign() const [function] [call site] 00037
4 Botan::BigInt::sign() const [function] [call site] 00038
2 Botan::BigInt::flip_sign() [function] [call site] 00039
2 Botan::operator-(Botan::BigInt const&, Botan::BigInt const&) [function] [call site] 00040
3 Botan::BigInt::data() const [function] [call site] 00041
4 Botan::BigInt::Data::const_data() const [function] [call site] 00042
3 Botan::BigInt::add2(Botan::BigInt const&, unsigned long const*, unsigned long, Botan::BigInt::Sign) [function] [call site] 00043
4 Botan::BigInt::sig_words() const [function] [call site] 00044
5 Botan::BigInt::Data::sig_words() const [function] [call site] 00045
6 Botan::BigInt::Data::calc_sig_words() const [function] [call site] 00046
7 void Botan::CT::unpoison<unsigned long>(unsigned long&) [function] [call site] 00047
8 void Botan::ignore_params<unsigned long&>(unsigned long&) [function] [call site] 00048
9 void Botan::ignore_param<unsigned long&>(unsigned long&) [function] [call site] 00049
7 unsigned long Botan::ct_is_zero<unsigned long>(unsigned long) [function] [call site] 00050
8 unsigned long Botan::expand_top_bit<unsigned long>(unsigned long) [function] [call site] 00051
4 Botan::BigInt::with_capacity(unsigned long) [function] [call site] 00052
5 Botan::BigInt::BigInt() [function] [call site] 00053
6 Botan::BigInt::Data::Data() [function] [call site] 00054
5 Botan::BigInt::grow_to(unsigned long) const [function] [call site] 00055
6 Botan::BigInt::Data::grow_to(unsigned long) const [function] [call site] 00056
7 Botan::BigInt::Data::size() const [function] [call site] 00057
5 Botan::BigInt::~BigInt() [function] [call site] 00058
6 Botan::BigInt::const_time_unpoison() const [function] [call site] 00059
4 Botan::BigInt::sign() const [function] [call site] 00060
4 Botan::bigint_add3(unsigned long*, unsigned long const*, unsigned long, unsigned long const*, unsigned long) [function] [call site] 00061
5 Botan::bigint_add3_nc(unsigned long*, unsigned long const*, unsigned long, unsigned long const*, unsigned long) [function] [call site] 00062
6 Botan::bigint_add3_nc(unsigned long*, unsigned long const*, unsigned long, unsigned long const*, unsigned long) [function] [call site] 00063
7 Botan::word8_add3(unsigned long*, unsigned long const*, unsigned long const*, unsigned long) [function] [call site] 00064
7 Botan::word_add(unsigned long, unsigned long, unsigned long*) [function] [call site] 00065
7 Botan::word_add(unsigned long, unsigned long, unsigned long*) [function] [call site] 00066
4 Botan::BigInt::sign() const [function] [call site] 00067
4 Botan::bigint_sub_abs(unsigned long*, unsigned long const*, unsigned long, unsigned long const*, unsigned long) [function] [call site] 00068
5 Botan::bigint_cmp(unsigned long const*, unsigned long, unsigned long const*, unsigned long) [function] [call site] 00069
6 Botan::CT::Mask<unsigned long>::is_equal(unsigned long, unsigned long) [function] [call site] 00070
7 Botan::CT::Mask<unsigned long>::is_zero(unsigned long) [function] [call site] 00071
8 unsigned long Botan::ct_is_zero<unsigned long>(unsigned long) [function] [call site] 00072
8 Botan::CT::Mask<unsigned long>::Mask(unsigned long) [function] [call site] 00073
6 Botan::CT::Mask<unsigned long>::is_lt(unsigned long, unsigned long) [function] [call site] 00074
7 unsigned long Botan::expand_top_bit<unsigned long>(unsigned long) [function] [call site] 00075
7 Botan::CT::Mask<unsigned long>::Mask(unsigned long) [function] [call site] 00076
6 Botan::CT::Mask<unsigned long>::select(unsigned long, unsigned long) const [function] [call site] 00077
7 Botan::CT::Mask<unsigned long>::value() const [function] [call site] 00078
7 unsigned long Botan::choose<unsigned long>(unsigned long, unsigned long, unsigned long) [function] [call site] 00079
6 Botan::CT::Mask<unsigned long>::is_zero(unsigned long) [function] [call site] 00080
6 Botan::CT::Mask<unsigned long>::is_zero(unsigned long) [function] [call site] 00081
6 void Botan::CT::unpoison<unsigned long>(unsigned long&) [function] [call site] 00082
5 void Botan::CT::conditional_swap_ptr<unsigned long const*>(bool, unsigned long const*&, unsigned long const*&) [function] [call site] 00083
6 void Botan::CT::conditional_swap<unsigned long>(bool, unsigned long&, unsigned long&) [function] [call site] 00084
7 Botan::CT::Mask<unsigned long>::expand(unsigned long) [function] [call site] 00085
8 Botan::CT::Mask<unsigned long>::is_zero(unsigned long) [function] [call site] 00086
7 Botan::CT::Mask<unsigned long>::select(unsigned long, unsigned long) const [function] [call site] 00087
7 Botan::CT::Mask<unsigned long>::select(unsigned long, unsigned long) const [function] [call site] 00088
5 void Botan::CT::conditional_swap<unsigned long>(bool, unsigned long&, unsigned long&) [function] [call site] 00089
5 Botan::bigint_sub3(unsigned long*, unsigned long const*, unsigned long, unsigned long const*, unsigned long) [function] [call site] 00090
6 Botan::assertion_failure(char const*, char const*, char const*, char const*, int) [function] [call site] 00091
7 __cxa_allocate_exception [call site] 00092
7 Botan::Internal_Error::Internal_Error(std::__1::basic_string_view<char, std::__1::char_traits<char> >) [function] [call site] 00093
8 Botan::Exception::Exception(char const*, std::__1::basic_string_view<char, std::__1::char_traits<char> >) [function] [call site] 00094
9 std::exception::exception() [function] [call site] 00095
9 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > Botan::fmt<char const*, std::__1::basic_string_view<char, std::__1::char_traits<char> > >(std::__1::basic_string_view<char, std::__1::char_traits<char> >, char const* const&, std::__1::basic_string_view<char, std::__1::char_traits<char> > const&) [function] [call site] 00096
9 std::exception::~exception() [call site] 00097
6 Botan::word8_sub3(unsigned long*, unsigned long const*, unsigned long const*, unsigned long) [function] [call site] 00098
6 Botan::word_sub(unsigned long, unsigned long, unsigned long*) [function] [call site] 00099
6 Botan::word_sub(unsigned long, unsigned long, unsigned long*) [function] [call site] 00100
4 Botan::BigInt::sign() const [function] [call site] 00101
4 Botan::BigInt::set_sign(Botan::BigInt::Sign) [function] [call site] 00102
5 Botan::BigInt::is_zero() const [function] [call site] 00103
6 Botan::BigInt::sig_words() const [function] [call site] 00104
4 Botan::BigInt::~BigInt() [function] [call site] 00105
2 Botan::operator-(Botan::BigInt const&, Botan::BigInt const&) [function] [call site] 00106
2 Botan::BigInt::cmp(Botan::BigInt const&, bool) const [function] [call site] 00107
3 Botan::BigInt::is_positive() const [function] [call site] 00108
4 Botan::BigInt::sign() const [function] [call site] 00109
3 Botan::BigInt::is_negative() const [function] [call site] 00110
4 Botan::BigInt::sign() const [function] [call site] 00111
3 Botan::BigInt::is_negative() const [function] [call site] 00112
3 Botan::BigInt::data() const [function] [call site] 00113
3 Botan::bigint_cmp(unsigned long const*, unsigned long, unsigned long const*, unsigned long) [function] [call site] 00114
3 Botan::BigInt::data() const [function] [call site] 00115
3 Botan::bigint_cmp(unsigned long const*, unsigned long, unsigned long const*, unsigned long) [function] [call site] 00116
2 abort [call site] 00117
2 Botan::operator<(Botan::BigInt const&, Botan::BigInt const&) [function] [call site] 00118
3 Botan::BigInt::is_less_than(Botan::BigInt const&) const [function] [call site] 00119
4 Botan::BigInt::is_negative() const [function] [call site] 00120
4 Botan::BigInt::is_positive() const [function] [call site] 00121
4 Botan::BigInt::is_negative() const [function] [call site] 00122
4 Botan::BigInt::data() const [function] [call site] 00123
4 Botan::bigint_ct_is_lt(unsigned long const*, unsigned long, unsigned long const*, unsigned long, bool) [function] [call site] 00124
5 Botan::CT::Mask<unsigned long>::expand(unsigned long) [function] [call site] 00125
5 Botan::CT::Mask<unsigned long>::is_equal(unsigned long, unsigned long) [function] [call site] 00126
5 Botan::CT::Mask<unsigned long>::is_lt(unsigned long, unsigned long) [function] [call site] 00127
5 Botan::CT::Mask<unsigned long>::select_mask(Botan::CT::Mask<unsigned long>, Botan::CT::Mask<unsigned long>) const [function] [call site] 00128
6 Botan::CT::Mask<unsigned long>::value() const [function] [call site] 00129
5 Botan::CT::Mask<unsigned long>::expand(unsigned long) [function] [call site] 00130
5 Botan::CT::Mask<unsigned long>::is_zero(unsigned long) [function] [call site] 00131
4 Botan::CT::Mask<unsigned long>::as_bool() const [function] [call site] 00132
5 Botan::CT::Mask<unsigned long>::unpoisoned_value() const [function] [call site] 00133
6 Botan::CT::Mask<unsigned long>::value() const [function] [call site] 00134
6 void Botan::CT::unpoison<unsigned long>(unsigned long&) [function] [call site] 00135
4 Botan::BigInt::data() const [function] [call site] 00136
4 Botan::bigint_ct_is_lt(unsigned long const*, unsigned long, unsigned long const*, unsigned long, bool) [function] [call site] 00137
4 Botan::CT::Mask<unsigned long>::as_bool() const [function] [call site] 00138
2 Botan::operator>(Botan::BigInt const&, Botan::BigInt const&) [function] [call site] 00139
3 Botan::BigInt::is_less_than(Botan::BigInt const&) const [function] [call site] 00140
2 Botan::operator<=(Botan::BigInt const&, Botan::BigInt const&) [function] [call site] 00141
3 Botan::BigInt::cmp(Botan::BigInt const&, bool) const [function] [call site] 00142
2 Botan::BigInt::is_zero() const [function] [call site] 00143
2 abort [call site] 00144
2 Botan::BigInt::is_zero() const [function] [call site] 00145
2 abort [call site] 00146
2 abort [call site] 00147
2 abort [call site] 00148
2 abort [call site] 00149
2 Botan::BigInt::is_nonzero() const [function] [call site] 00150
3 Botan::BigInt::is_zero() const [function] [call site] 00151
2 abort [call site] 00152
2 Botan::BigInt::is_nonzero() const [function] [call site] 00153
2 abort [call site] 00154
2 abort [call site] 00155
2 abort [call site] 00156
2 abort [call site] 00157
2 Botan::BigInt::is_nonzero() const [function] [call site] 00158
2 abort [call site] 00159
2 Botan::BigInt::is_nonzero() const [function] [call site] 00160
2 abort [call site] 00161
2 Botan::BigInt::is_positive() const [function] [call site] 00162
2 abort [call site] 00163
2 Botan::BigInt::is_negative() const [function] [call site] 00164
2 abort [call site] 00165
2 Botan::BigInt::~BigInt() [function] [call site] 00166