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